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

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

4

2 回答 2

0

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

如果你把你的 cout 线分成两个离散的输出,事情会如你所料地评估。

于 2012-11-09T17:07:57.547 回答
0

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

于 2012-11-09T17:26:37.570 回答