c++ - 为什么这个 for 循环不停止?

标签 c++ arrays for-loop undefined-behavior

<分区>

我试图用这段代码为 try-catch 测试产生一个错误,我预计在访问 a[3](第四个)元素时会出现错误。即使没有出现错误,for 循环也必须在五次迭代后停止,而这种情况从未发生过。

int a[3] = {1, 2, 3};
for(int i = 0; i < 5; i++)
{
    std::cout << i << ": " << a[i] << std::endl;
}

输出:

0: 1
1: 2
2: 3
3: 1970756548
4: 4201552
5: 2686800
6: 2130567168
7: 0
8: 0
9: 2686824
10: 4198992
.
.
.
4150: 0
4151: 0
4152: 0
4153: 0
4154: 0

最佳答案

这是未定义的行为(UB),您的数组中没有(至少)五个元素。您无法捕获 UB,异常是我们捕获的内容。这里没有更多争论,但请参阅评论部分中的有趣链接。

关于c++ - 为什么这个 for 循环不停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209016/

相关文章:

c++ - 使用 DialogBoxIndirect 时,如何获取用户在对话框关闭时输入的文本?

c++ - 为什么对数组的 const 左值引用不在下面编译?

c - 为什么这个 C 代码给我一个总线错误?

C;如果我在 while 循环内的 for 循环中放置一个 break

java - 一分钟后立即停止线程

javascript - 在 JavaScript 中构建基本计算器 - 第一次工作但在循环中我收到 "___ is not a function"错误

c++ - 在 CMakeList.txt 文件中包含 OpenSSL

c++ - 多线程和阻塞套接字

c - 使用临时数组的动态内存分配

c++ - 使用 clang llvm 检查变量是否在任意源位置具有范围