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

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

本文关键字:意外 结果 链接 cout 执行      更新时间:2023-10-16

以下程序包括简单的递增和递减操作。正如我的预测,程序应该打印"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;

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

发布和预递增,当你使用时i++它在你运行时在线路之后运行++i它在执行线路之前添加,所以当你这样做时--i它会在线路运行之前从i中减去i++调用。

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