我是C ++的新手,正在尝试学习数组的概念。我从C ++入门中看到了下面的代码和语句。
与内置类型的变量一样,默认初始化的数组为
在函数内部定义的内置类型将具有未定义的
价值观。
从此语句判断,下面的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++ - 为什么即使在函数内部定义了int ia2 [10],其默认值为0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35570328/