【发布时间】:2013-03-10 19:37:44
【问题描述】:
C 代码:
int a;
printf("\n\t %d",a); // It'll print some garbage value;
那么这些垃圾值是如何分配给C语言幕后未初始化的变量的呢?
这是否意味着 C 首先将内存分配给变量“a”,然后该内存位置的值变成了“a”的值?还是别的什么?
【问题讨论】:
-
虽然这个特定代码不会发生这种情况,但如果
int a;在文件范围内(任何函数之外)声明,它将自动初始化为0。 -
@teppic:
static int a;也将自动初始化为零,无论其范围如何。 -
@Destructor - 我知道,但它是专门写成
int a:) -
请注意,此代码会导致 UB。不要读取未初始化的值,
char除外。