PreIncrement / PostIncrement Operators Magic!讨厌我 :-/

时间:2013-06-15 13:39:50

标签: c++ syntax expression cout

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

如果有人可以向我解释这些输出是如何产生的:-) 在此先感谢!

1 个答案:

答案 0 :(得分:1)

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

如果x是用户定义的类型,则为you have unspecified behavior


<子> 1。从技术上讲,C ++ 11改变了术语,因此不再使用“序列点”,效果是相同的。