当 C 程序启动并将变量分配给内存位置时,C 标准是否说明该值是否已初始化?
// global variables
int a;
int b = 0;
static int c;
在上面的代码中,'b'将被初始化为0。'a'的初始值是多少? “c”对这个模块来说是静态的,有什么不同吗?
最佳答案
由于您特别提到了global变量:在全局变量的情况下,无论它们是否被声明为static
,它们都将被初始化为0。
Local 另一方面,变量将是未定义(除非它们被声明为static
,在这种情况下它们也将被初始化为 0 ——感谢 Tyler McHenry)。换句话说,这意味着您不能依赖它们包含任何特定的东西——它们将只包含该位置内存中已经存在的任何随机垃圾,这可能因运行而异。
关于c - 变量的默认状态是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006635/