c++ - i+v[i++]的计算顺序是什么

标签 c++

<分区>

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v{1,2,3,4,5};
    int i = 0;
    while (i < 5) {
        cout << i+v[i++] << endl;
    }

    return 0;
}

为什么程序的输出是“2,4,6,8,10”,而不是“1,3,5,7,9”?

最佳答案

这是 undefined behaviour因为“第一个”i 和另一个 i++ 的读取未排序。输出无意义。

进一步阅读:Undefined behavior and sequence points ,

关于c++ - i+v[i++]的计算顺序是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944007/

相关文章:

c++ - 优化昂贵函数的调用次数

c++ - ACE 如何启用 IPv6

c++ - 动态链接时,应用程序如何知道要加载哪个 DLL 文件?

c++ - 我怎样才能输出#define值

c++ - 从模板中的类获取类型

c++ - 默认构造函数和析构函数的 "=default"与 "{}"有何不同?

c++ - Visual Studio 2017中的链接器错误

c++ - 意外的输出

c++ - 什么是迭代器失效?

c++ - 无法从 socket_.async_receive_from 接收数据