对于局部变量没有初始化时,其值C语言规范并没有做规定,不过一般有两种做法,一种是不会去初始化,这时sum值是随机值,不一定是多少。
另一种就是编译器会做这样的初始化,比如gcc一般会默认初始化为0,而VC会默认初始化为0xcccccccc
也就是说,这个程序会跑出什么结果,取决于编译器。甚至有些编译器遇到这种情况,会直接报错,编译失败。
而你现在的结果,明显是编译器默认初始化为0的情况。
其实判断这个,不需要这么麻烦,直接
#include
int main (void)
{
int sum;
printf("%d",sum);
return 0;
}
就可以知道编译器是怎么做的了。