2017-02-24 72 views
0

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

这是未定义的行为。 – Klaus

回答

0

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

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

此类代码的行为没有定义,并且取决于正在使用的编译器和平台。不用说,您不应该依赖此代码的某些行为。