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

时间:2017-02-24 18:37:28

标签: c++

当使用单个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

1 个答案:

答案 0 :(得分:0)

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

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

此类代码的行为未定义,取决于使用的编译器和平台。毋庸置疑,您不应该依赖此代码的某种行为。