黑马程序员技术交流社区
标题:
新手运算符的问题,求大虾指点
[打印本页]
作者:
黑马潘浩
时间:
2013-3-5 20:45
标题:
新手运算符的问题,求大虾指点
本帖最后由 黑马潘浩 于 2013-3-6 12:53 编辑
1. int a=2;int b=a+3*a++;
2. int a=2;int b=(a++) +3*a;
为什么1运行的结果b等于8,而2运行的结果
b等于
11. 而且++的运算优先级是高于*的。
作者:
沈文杰
时间:
2013-3-5 20:59
其实我也不懂,但是我想说,你还是不要这样写,不规范也不便于阅读,完全是给自己找麻烦
作者:
朱盛文
时间:
2013-3-5 21:06
不懂,只知道第一个是怎么回事,第一个是先计算后,a才自增。第二个就搞不明白了
作者:
彭波
时间:
2013-3-5 21:07
1. int a=2;int b=a+3*a++; //程序从左往右读,a先于3相称后得6,然后才自增变为3
2. int a=2;int b=(a++) +3*a;//a先是2,然后才自增1,与3相称得9
a++是a值先参与运算后在自增1
++a是a值自增1后在参与运算
作者:
张宝
时间:
2013-3-5 21:08
1. int a=2;int b=a+3*a++;
2. int a=2;int b=(a++) +3*a;
为什么1运行的结果b等于8,而2运行的结果b等于11. 而且++的运算优先级是高于*的。
因为++在a的后边,++为后缀时,先取值做运算,然后再自加1。所以b=a+3*a++;
b=2+3*2=8 //此处 a=2,运算完成后再自加1
b=(a++) +3*a=2+3*3=11 //与1的道理一样,++为后缀,a取值运算完之后再自加1,所以最后边的a的值是3.
作者:
lgh521911
时间:
2013-3-5 21:24
int b = (a++) + 3*a 可以分开来看成int c = a++; int b = c + 3*a;因为++运算是先取值后自加,那么 c的值就是2,而a的值变成了3。那么b = 2 + 3 * 3 = 11 了。
希望能帮到你~
作者:
明锦添
时间:
2013-3-5 22:42
1. int a=2;int b=a+3*a++;
2. int a=2;int b=(a++) +3*a;
为什么1运行的结果b等于8,而2运行的结果b等于11. 而且++的运算优先级是高于*的
第一个是因为先引用a后自加,而第二个事因为a自加后在计算的,所以答案不一样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2