预增量运算符

时间:2012-11-09 17:00:02

标签: pre-increment

#include<iostream>
using namespace std;
int main()
{
    int i=2;
    cout<<++i<<" "<<++i;
    return 0;
}

为什么程序的输出是'4 4'而不是'3 4'?

2 个答案:

答案 0 :(得分:0)

因为两个增量都在输出行之前发生。对屏幕的实际写入被延迟,直到整个行已经运行,但到那时i的引用已经更新了它的值。

如果你将cout线分成两个不连续的输出,事情会按照你的预期进行评估。

答案 1 :(得分:0)

对同一个变量(两个增量)有两个副作用,它们之间没有序列点。因此它们可能以任何顺序发生,甚至可能会交错 - 行为未定义。你似乎在这里得到交错行为 - 表达式++i是增量我然后读i。所以你得到增量,增量,读,读。

相关问题