与c++中的Cout混淆

Confusion with Cout in c++

本文关键字:混淆 Cout 中的 c++      更新时间:2023-10-16

由于在cout函数中打印将从左侧到右侧开始,为什么这些类型的命令打印方式不同?请解释一下。据我所知,以下程序的输出应该是113,但却是322。怎样

#include<iostream.h>
void main()
{
int i=1;
cout<<i<<i++<<++i;
}

输出:

322

提前感谢

您似乎假设增量从左到右发生,但根据标准,子表达式的求值顺序是未指定。请参阅此处了解更多详细信息。

在这种情况下,看起来编译器选择了从右到左进行评估:

  • ++i发生,所以i == 22是表达式的值
  • 发生i++,将i递增到3,但评估为其旧值2
  • CCD_ 8现在被评估为CCD_