为什么 int ia2[10] 的默认值为 0,即使它是在函数内部定义的?
Why int ia2[10] has a default value of 0 even though it is defined inside a function?
我是 C++ 的新手,正在尝试学习数组的概念。我从 C++ primer 中看到了下面的代码和语句。
As with variables of built-in type, a default-initialized array of
built-in type that is defined inside a function will have undefined
values.
从这个语句来看,下面的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
它不是强制具有一些随机值。不确定那里会有什么价值,所以它可以是任何东西,包括全部归零。另请注意,读取值是未定义的行为。
我是 C++ 的新手,正在尝试学习数组的概念。我从 C++ primer 中看到了下面的代码和语句。
As with variables of built-in type, a default-initialized array of built-in type that is defined inside a function will have undefined values.
从这个语句来看,下面的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
它不是强制具有一些随机值。不确定那里会有什么价值,所以它可以是任何东西,包括全部归零。另请注意,读取值是未定义的行为。