-1
        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 ??

请如果有人可以向我解释这些输出是如何产生的:-) 提前致谢!

4

1 回答 1

1

这取决于x. 如果x是内置类型(例如,int),那么您有未定义的行为,因为您修改x了两次而没有插入序列点1

如果x是用户定义的类型,那么您有未指定的行为


1.技术上C++11改变了术语,不再使用“sequence point”,但效果是一样的。

于 2013-06-15T13:44:42.847 回答