#include <iostream>
using namespace std;
bool a[5];
int main()
{
for (int i = 0; i < 5; i++)
{
cout<<a[i]<<" ";
}
return 0;
}
以上代码中输出为0 0 0 0 0
,但是下面代码输出却是不确定的.这是为什么?
#include <iostream>
using namespace std;
int main()
{
bool a[5];
for (int i = 0; i < 5; i++)
{
cout<<a[i]<<" ";
}
return 0;
}
输出176 74 183 230 255
两段代码中的a都是默认初始化,区别在于全局变量a在默认初始化之前会首先被0初始化(zero-initialized),而局部变量a不会(这样说并不意味着局部变量就不会被0初始化)。同时,这个默认初始化的局部变量a的值是不确定的。所以这里全局变量a的值是0,局部变量a的值不确定。
实际上一个变量是否会被0初始化与这个变量的存储期(storage duration)有关。静态变量在初始化之前会被0初始化,而自动变量不会。