C++面试题集锦:赋值语句相关

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

下列 C/C++代码的输出结果是什么:

c 语言中,局部变量的优先级会高于全局变量。这里 int i = i; 中的 i 和全局变量中的 i 是无关的。

对于全局变量和静态变量,没有初始化系统会默认置零。而局部变量和自动变量没有初始化初始值是一个随机的未定义的值。所以这里的输出也是一个无法预见的值。

经过测试,在较高标准的编译环境中,不管是全局变量还是局部变量,都会默认初始化为 0 。

本例在 【VC6 】环境下 i 是随机值,在 【gcc version 4.4.7 20120313 (Red Hat 4.4.7-18 】环境下 i 是 0 。

发表评论