一、未定义变量的初始值和变量作用域
下列C/C++代码的输出结果是什么:
#include <stdio.h>
int i = 1;
int main(){
int i = i;
printf("%d", i);
return 0;
}
c语言中,局部变量的优先级会高于全局变量。这里int i = i;
中的i
和全局变量中的i
是无关的。
对于全局变量和静态变量,没有初始化系统会默认置零。而局部变量和自动变量没有初始化初始值是一个随机的未定义的值。所以这里的输出也是一个无法预见的值。
经过测试,在较高标准的编译环境中,不管是全局变量还是局部变量,都会默认初始化为0。
本例在【VC6】环境下i是随机值,在【gcc version 4.4.7 20120313 (Red Hat 4.4.7-18】环境下i是0。
此处评论已关闭