C++中未解之谜

来源:互联网 发布:单片机嵌入式培训 编辑:程序博客网 时间:2024/05/17 06:49

下面的题目是刚刚在群里看到的,可能了解的深入了就知道原因了,暂时不明白,还请大家不吝赐教。

int b=4;cout<<b++<<b++<<b<<endl;//输出546

而自己重载++操作符可以正确输出:

class Int{ public: friend ostream &operator<<(ostream&out,Int i){out<<i.i;return out;}const int operator++(int){int res=i;i++;return res;}Int (int ii):i(ii) {}int i;};void main(){Int i(4);cout<<i++<<i++<<i;//输出544}

根据同学的讨论和自己的猜想,应该是对有自增自减运算的表达式,先从右至左入栈,然后从左至右依次出栈,并输出b

有人给出编译代码,然而我并看不懂,留着以后看吧 或者谁看懂了指导一下


int main(){   int b = 3;b-=b++;cout<<b<<endl;b += b *= b -= b++; cout << b<<endl;b=4;cout<<b--<<""<<b--<<b--<<b<<endl;b=4;cout<<b++;cout<<b++<<endl;system("pause");return 0;}

想玩的同学再看看上面的代码吧。我不行了,我跟不上他们的步伐了,此刻我更加确信自己不适合写代码。~~~~(>_<)~~~~

0 0
原创粉丝点击