繁体   English   中英

为什么在 C++ 中未初始化数组中有随机数,而在半初始化数组的未初始化成员中没有?

[英]Why there are Random numbers in non initialized array but not in non initialized members of half initialized array in C++?

为什么在示例 1 代码中它在数组的未初始化项中分配 0,但在示例 2 中在完全未初始化的数组中分配随机数? 为什么它也不将 0 分配给完全未初始化的数组?

示例 1:

int ar[5] ={0,1};
for (int i =0; i< 5; i++){
   cout << ar[i] << " ";
}
// output: 0 1 0 0 0 

示例 2:

int ar[5] ;
for (int i =0; i< 5; i++){
   cout << ar[i] << " ";
}
// output: 1875998720 0 1875947552 0 1876031856 

它们是两种不同的初始化。

情况2, int ar[5]; 执行默认初始化,因为所有元素都被初始化为不确定的值。

情况1, int ar[5] ={0,1}; 执行聚合初始化,因为第一个和第二个元素被初始化为01 ,其余元素的值初始化(零初始化)为0

在第一个例子中! 您正在使用默认值初始化大小为 5 的数组。

int arr[5] = {0,1}

花括号中的值将分配给数组中的相应索引。 例如,数组的第一个索引为 0,第二个索引为 1,然后默认 0 值到数组中的其余索引。

在第二个示例中,您只是声明了数组而不是初始化。 因此,在数组的每个索引处,都有垃圾值,当您迭代数组时,您会在数组的每个索引处收到无例外(垃圾)值。

如果你声明一个变量但没有用任何值初始化,它会分配我们无法预测的随机垃圾值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM