我有以下代码片段.
int j; printf("%d",j);
正如预期的那样,我得到了垃圾值.
32039491
但是当我在上面的代码片段中包含一个循环时,就像
int j; print("%d",j); while(j);
我在该程序的多次试验中得到以下输出.
0
我一直认为局部变量默认初始化为垃圾值,但看起来变量在使用循环时会自动初始化.
它具有不确定的价值.它可以是任何东西.
引用C11
§6.7.9
如果未显式初始化具有自动存储持续时间的对象,则其值不确定.[...]
除非显式初始化,否则自动局部变量将包含不确定的值.如果您尝试使用变量,同时它保持不确定的值
没有地址
可以有陷阱表示
用法将导致 未定义的行为.