单个Cout中单个变量的多个更新的顺序

Order of multiple updates to a single variable in single cout

本文关键字:单个 更新 顺序 变量 Cout      更新时间:2023-10-16

使用单个COUT打印相同的变量多次更新时,我会得到一个奇怪的更新顺序。有人可以解释如何完成此类更新吗?

 int value = 2;
 cout << value << value++ << ++value << endl; // 434  
 value = 2;
 cout << ++value << value++ << value << endl; // 424 
 value = 2;
 cout << value++ << value++ << ++value << endl; // 435
 value = 2;
 cout << ++value << value++ << value++ << endl; // 532

执行单个语句中表达式的顺序是未定义的。显然,除非通过括号或执行顺序指定。例如:

int a[3]{};
int i=1;
a[i] = i++; //undefined if a[1] or a[2]

此类代码的行为尚未定义,并且取决于编译器和使用的平台。不用说您不应该依靠此代码的某种行为。