【发布时间】:2021-10-15 12:03:09
【问题描述】:
我的理解有问题。为什么这段代码有效? 我现在希望得到一个超出范围的错误。
int testArray[2][2];
testArray[0][0] = 1;
testArray[0][1] = 1;
testArray[1][0] = 1;
testArray[1][1] = 1;
testArray[1][5] = 5;
std::cout << testArray[1][5];
我正在使用 Visual Studio 2019。我收到警告,但在控制台上仍显示正确的值。
【问题讨论】:
-
这是undefined behavior 的一个很好的例子。仅仅因为您的程序不会发生崩溃...... 不 意味着它是“正确的”。也不意味着它不会在不同的时间、不同的地方或不同的平台上崩溃。或者可能会发生其他“坏事”——在最坏的情况下,你可能仍然幸福地没有意识到这些事情!示例:假设您在“testArray[]”之后声明了一个变量。您可能刚刚删除了该变量。还:像 C# 或 Java 之类的“托管语言”MIGHT 会给出“超出范围”错误。
标签: c++ arrays c++11 multidimensional-array range