一、未定义变量的初始值和变量作用域

下列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。

最后修改:2018 年 01 月 13 日
如果觉得我的文章对你有用,请随意赞赏