在将数组初始化到某个限制之后再将数组打印出该限制之后,它仍然会打印结果。为什么?
Example :
#include <iostream>
using namespace std;
int main() {
int A[2] = {};
cout << A[0] << "\n";
cout << A[1] << "\n";
cout << A[2] << "\n";
cout << A[3] << "\n";
cout << A[4] << "\n";
return 0;
}
输出是:
0
0
0
0
-13120
这里我刚刚将数组初始化到2个位置。但我仍然得到A [2],A [3]等的结果。
答案 0 :(得分:4)
越过限制会导致未定义的行为(UB)。它可以打印并且看起来像正常工作,它可能会崩溃,它可能会卡住,或者它可能是任何东西。
所以,如果它有时有效,你不应该依赖它。
答案 1 :(得分:2)
超出数组的边界是未定义的行为。这意味着程序可能什么都不做,可能会打印一些东西,可能会退出程序,可能......行为根本就没有定义。 所以打印出来的东西仍然是一种可能的行为,但你不能依赖这种行为。