int a = 0;
cout << a << a+1 << a << 1+a << a;
// output is 01010 , ok fine i understand it! :-)
cout << endl;
cout << a << ++a << a << a++ << a;
// output is 22202 ,
// Plzzz help me how compiler interprets my this statement
// i cant understand :-(
int x = 1;
cout << ++x + ++x;
// output is 6
// how ??
如果有人可以向我解释这些输出是如何产生的:-) 在此先感谢!
答案 0 :(得分:1)
这取决于x
的类型。如果x
是内置类型(例如,int
),那么您有未定义的行为,因为您在没有插入序列点的情况下修改x
两次 1
如果x
是用户定义的类型,则为you have unspecified behavior。
<子> 1。从技术上讲,C ++ 11改变了术语,因此不再使用“序列点”,效果是相同的。