我是C ++的新手,正在尝试学习数组的概念。我在C ++入门中看到了下面的代码和声明。
与内置类型的变量一样,默认初始化的数组 在函数内定义的内置类型将具有undefined 值。
从这个语句判断,下面的int ia2[10]
是在int main(){}函数内定义的,因此不应该有默认值,所有元素都应该是未定义的。但是,当我尝试打印出它们的值时,它们都等于0,这是任何未初始化的int数组的默认值。
为什么会这样?
int main() {
string sa2[10]; //all elements are empty strings
int ia2[10]; //all elements are undefined
for (int i = 0; i < 10; i++){
cout << "sa2[" << i << "] " << sa2[i] << endl;
cout << "ia2[" << i << "] " << ia2[i] << endl;
}
}
输出:
sa2[0]
ia2[0] 0
sa2[1]
ia2[1] 0
sa2[2]
ia2[2] 0
sa2[3]
ia2[3] 0
sa2[4]
ia2[4] 0
sa2[5]
ia2[5] 0
sa2[6]
ia2[6] 0
sa2[7]
ia2[7] 0
sa2[8]
ia2[8] 0
sa2[9]
ia2[9] 0
答案 0 :(得分:1)
它不会被迫拥有一些随机值。它未定义将是什么价值,所以它可以是任何东西,包括所有归零。另请注意,读取值是未定义的行为。