"cout" 执行递增和递减时链接产生意外结果

"cout" chaining while performing increment and decrement produces unexpected result

以下程序包括简单的递增和递减操作。正如我的预测,程序应该打印“0 1 1 1”,但它打印的是“1 0 2 0”,但为什么?

#include<iostream>
using namespace std;
int main(void)
{
    int i=0;
    cout<<i++<<" "<<i++<<" "<<--i<<" "<<i++;//this will print "1 0 2 0"
}

...但如果我不像

这样链接输出命令,它就可以正常工作
cout<<i++<<endl;
cout<<i++<<endl;
cout<<--i<<endl;
cout<<i++<<endl;

即使它们应该以相同的方式工作,但它们产生不同的结果。但是为什么?

Post 并在您使用 i++ 时预递增 运行s 在您使用 运行 ++i 时它在该行之前添加所以当你执行 --i 时,它从 i 行之前的 i++ 调用的 运行 中减去。

尝试将它们全部设为 i++i----i++i 这样结果就不会因为它们在同一行上而有所不同不会。