【求解】c++自增问题

[复制链接]
查看11 | 回复4 | 2011-3-25 09:08:45 | 显示全部楼层 |阅读模式
void main(){
float x=1,y;
y=x++*++x;
cout<<y<<endl;
}
运算结果为什么会为9?

回复

使用道具 举报

千问 | 2011-3-25 09:08:45 | 显示全部楼层
首先我把我的看法说下:我认为结果会是 4不是 9前++的运算级别是最高的,先算,这时++x 会使x 变成 2然后执行 后 ++ , 这时 x的值将会在这个++中保持不变,还是 2;然后相乘得到4
回复

使用道具 举报

千问 | 2011-3-25 09:08:45 | 显示全部楼层
在VC里运行结果是4啊,算乘法的时候先算右边的++x,x变成2,然后再算左边的x++,此时x=2,最后算乘法结果是2*2=4。关于自增运算不必过多纠缠,搞不清干脆就分开写,不容易出现歧义,另外在不同的编译系统里,运算结果可能会有不同。
回复

使用道具 举报

千问 | 2011-3-25 09:08:45 | 显示全部楼层
结果应是 X*X的,x++ ,就使x变为2了,++x;就使x变为 3了,最后是 X*X,就是3的平方,为9了。
回复

使用道具 举报

千问 | 2011-3-25 09:08:45 | 显示全部楼层
不同的编译器对++操作符 在编译时的理解有可能是不同的比如你这个程序在vs2008里面编译运行的结果 就是4你可以看看我空间里的一篇关于printf函数的文章,里面有对++ --操作符的详细讲解http://hi.baidu.com/tonydelwee/blog/item/2e683a1aa31320e9af5133c6.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行