<分区>
#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”?
标签 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++
的读取未排序。输出无意义。
关于c++ - i+v[i++]的计算顺序是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944007/