当我查看数组值时,它会打印一个随机数.为什么是这样?

Nat*_*han 0 c++

我目前正在学习C++,直到昨天我遇到了这个叫做数组的新东西.到目前为止我所知道的只是他们可以在某种表格方面保存数据,您可以修改/读取他们持有的数据.

由于我正在尝试使用C++,我想我会尝试打破它,这让我现在就问这个问题.当我尝试从未指定的值读取时,我得到一个数字,我不确定它为什么会被引起.

int lotteryNumbers[5] = {10, 20, 30, 40, 50};
// Yes, I know that the loop count is 5!
    for (int loopCount = 0; loopCount <= 5; loopCount++) {
        cout << lotteryNumbers[loopCount] << endl;
    }
Run Code Online (Sandbox Code Playgroud)

我的输出是;

10
20
30
40
50
13439729 <-- What is this sourcery?!
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢指导我学习这种复杂的语言.

谢谢,内森.

编辑:谢谢你的帮助.现在标记为重复.:d

Bat*_*eba 6

C++让你能够在脚下射击自己:在运行时没有对数组进行边界检查.

这取决于您确保只引用数组中的索引.

读取数组外部索引的行为未定义.任何事情都可能发生:包括在内存中打印该位置的内容(在您的情况下可能会发生这种情况 - 请使用您的调试器进行检查).或者编译器可以吃你的猫.

  • @Nathan虽然相邻的内存可能是潜在的解释,但过于关注它可能会导致你进入一个在C和C++初学者程序员中普遍存在的伪低级思维的世界.最好将注意力集中在答案的一部分,即行为是*未定义*并且*任何*都可能发生.从长远来看,它将为您提供更好的C和C++ UB心智模型. (2认同)