我只是想知道,C ++甚至Microsoft VS编译器是否对42号有一定的偏见?我正在尝试这个代码,它涉及一个多维数组,其中尚未声明任何内容(因此我在插入任何值之前测试输出):
// #included: iostream, iomanip, cstring, random, cmath
using namespace std;
int main()
{
// declaring the arrays
int page[30][100];
// printing out example values
cout << "\n" << page[1][30]; // returns : -858993460
cout << "\n" << page[18][18]; // returns : -858993460
cout << "\n" << page[42][42]; // returns : 3014706
cout << "\n" << page[1][102]; // returns : -858993460
return 0;
}
嗯,这本身并不奇怪吗?但如果我改变价值观,它又会再次发生。
这显然不仅仅是因为它们是同一类型的两个价值观。无论我在哪里放置代码片段,它都会发生,因此它不会是随机错误。你们觉得这是一个复活节彩蛋吗?
旁注:不,我不会掉酸。
答案 0 :(得分:2)
这段代码中没有任何超自然现象 此处发布的值未定义,结果为undefined behavior。
该值取决于当时使用的数据,可以是您的内存使用的任何内容。
这总是一个糟糕的想法。它会导致垃圾数据,并且几乎肯定会使您的代码出错。 (除非是出于学习目的)