关于C++里面的自加运算,即i++之类的问题!急!

int main( )
{ int i=2;
cout<<i++<<++i<<i<<i++<<endl;
cout<<i<<endl;
return 0;
}
为什么这个东西的答案是
4432
5

求详细解答

如果输出是4432,cout计算顺序从右向左,输出顺序从左至右;
第一个是i++,所以输出2
第二个是i,所以输出3
第三个是++i,所以输出4
第四个是i++,依然输出4
这四个输出之后,紧接着输出i,此时i已经等于5了。

ps:计算顺序并没有任何标准规定,至于从左至右计算,还是从右至左计算,全跟编译器实现相关。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-08
搞错答案了吧。
应该输出
2444
5
才对吧,你运行就知道答案了,我这里没有c++编译工具。
输出的时候
i++,先输出再增,所以输出的是2,但i是3
++i,先自增再输出,所以输出4,i此时是4
i 输出4
i++,先输出再增,所以输出的是4,但i是5
i, 输出5
第2个回答  2010-07-08
第一行,从右到左扫描:
1. i++,i先输出,然后自加,所以是2;
2. i,输出第一步的自加后结果3;
3. ++i,i先自加,然后输出,所以是4;
4. i++,i先输出,然后自加,所以是4;
第二行:输出上一步的自加结果5.
第3个回答  2010-07-08
cout表达式是从右向左计算
a=i++,是先把i值赋给a,再自增
b=++i,是先自增,在把值赋给b
若分别用x,y,z,w表示第一个cout的4个式子,m表示第二关式子,则有,
w=2,自增后,i=3,则z=3,
y=++i=4,i=4;x=i++=4,i=5;
m=i=5
第4个回答  2010-07-08
这是编译器从右向左运算的原因。先是最后一个i++;这时候i=2,存储与堆栈中。然后i,这个时候i=3....
最后照顺序输出
相似回答
大家正在搜