c++ - C++ 中的未定义行为

标签 c++ undefined overflow

<分区>

我从 Facebook 帖子中得到了这个。这里发生了什么事?查看 ideone 中的输出。输出超过 10 行。

代码:

#include<iostream> 
using namespace std;

int main()
{
    for (int i = 0; i < 10; ++i)
        cout << i*1000000000 << endl;
}

Ideone Link

最佳答案

您的平台很可能有 32 位 int。所以 1'000'000'000 是一个 int,编译器将尝试将 i * 1'000'000'000 计算为一个 int 也是。这会导致 i 从 3 开始溢出。

溢出有符号整数类型的行为是未定义的。

请注意,这会导致整个程序 行为未定义,这会导致您观察到多行输出(超过 10 行)。

(如果您选择了 10'000'000'000 而不是说乘法将使用 long long 类型进行计算并且行为将被明确定义!)

关于c++ - C++ 中的未定义行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55298078/

相关文章:

c++ - 从 C 程序调用 C++ 库,哪一个更好?

c++ - 静态链接 SSL 与 Poco

html - 带有悬停内容的可滚动表格

css - chrome中的CSS溢出是什么?

c++ - 当shared_ptr,当unique_ptr

angularjs - ng-model 不适用于预先输入

php - 在表中找不到条目时的 Laravel undefined variable

C:简单算术输出的确认

css - 下拉菜单,其中溢出隐藏在父内部

c++ - 在 Metal 着色器代码中,如何定义函数的输入/输出参数变量?