#include<iostream>
using namespace std;
int main()
{
int i=2;
cout<<++i<<" "<<++i;
return 0;
}
为什么程序的输出是'4 4'而不是'3 4'?
答案 0 :(得分:0)
因为两个增量都在输出行之前发生。对屏幕的实际写入被延迟,直到整个行已经运行,但到那时i的引用已经更新了它的值。
如果你将cout线分成两个不连续的输出,事情会按照你的预期进行评估。
答案 1 :(得分:0)
对同一个变量(两个增量)有两个副作用,它们之间没有序列点。因此它们可能以任何顺序发生,甚至可能会交错 - 行为未定义。你似乎在这里得到交错行为 - 表达式++i
是增量我然后读i。所以你得到增量,增量,读,读。