垃圾值如何分配给c中的变量

C代码:

int a; printf("\n\t %d",a); // It'll print some garbage value; 

那么如何将这些垃圾值分配给C中窗帘后面的未初始化变量?

这是否意味着C首先将内存分配给变量’a’然后该内存位置的内容变为’a’的值? 或者是其他东西?

这是否意味着C首先将内存分配给变量’a’然后该内存位置的内容变为’a’的值?

究竟!

基本上,C没有做任何你不告诉它的事情。 这既是它的优势,也是它的弱点。

这是否意味着C首先将内存分配给变量’a’然后该内存位置的内容变为’a’的值? 或者是其他东西?

正确。 值得一提的是,自动变量(如int a )的“分配”实际上是不存在的,因为这些变量存储在堆栈或CPU寄存器中。 对于存储在堆栈中的变量,在调用函数时执行“分配”,并归结为一个指令,该指令将堆栈指针移动一个在编译时计算的固定偏移量(函数使用的所有局部变量的组合存储,四舍五入到正确对齐)。

分配给CPU寄存器的变量的初始值是寄存器的先前内容。 由于这种差异(寄存器与内存),有时会发生在编译时没有优化的情况下正常工作的程序在打开优化时编译。 之前指向恰好为零初始化的位置的未初始化变量现在包含来自先前使用相同寄存器的值。

int a ;

在声明变量时,会分配内存。 但是未分配此变量,这意味着变量a未初始化。 如果此变量a仅被声明但在程序中不再使用,则称为垃圾值 。 例如:

 int a, b; b=10; printf("%d",b); return 0; 

这里它只是声明但不再分配或初始化。 所以这被称为垃圾值

最初内存有一些值,那些是未知值,也称为垃圾值,当我们声明一个变量时,根据我们在声明时指定的数据类型为变量保留一些内存,所以内存初始值是未知值,如果我们初始化其他一些值然后我们的值将在该内存位置。