我是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/

10-10 22:43