黑马程序员技术交流社区

标题: 优先级的问题 [打印本页]

作者: 每天进步一点点    时间: 2014-6-10 11:52
标题: 优先级的问题
本帖最后由 每天进步一点点 于 2014-6-12 21:50 编辑

设int a=1,b=2,c,d,e;执行c=(-a++)+(++b);请问a,b,c的结果是:???


请高人详细讲解,谢谢
作者: 每天进步一点点    时间: 2014-6-10 11:54
亲,重点讲解(-a++)的变化过程,以及a是怎么变化的。
作者: 黄莉萍    时间: 2014-6-10 19:50
设int a=1,b=2,c,d,e;执行c=(-a++)+(++b);请问a,b,c的结果是:???
输出结果:a = 2, b = 3, c = 2
首先不管(-a++)+(++b)怎么运算,a与b都进行自加各一次,所有a = 2, b =3
再进行(-a++)+(++b)运算,运算时区分++在前与++在后的运行原理
++在前:先自加再进行运算  例:int b = 1;
                                                   int a = ++b;
                                                   则b = 2 , a = 2

++在后:先进行运算再自加  例:int b = 1;
                                                   int a = b++;
                                                   则b = 2 , a = 1
所以c = (-a++) + (++b)的表达式是:c = -1 + 3 则c = 2
(-a++)就是a前面加了个负号再进行运算,a 自加时不考虑这个负号
希望我地回答能帮到你
作者: 小海    时间: 2014-6-10 20:02
关键点就是-号什么时候算,其实它是在a自加后算的,这样就是-1+3了,
作者: 武星    时间: 2014-6-10 21:10
我想你是不知道-a++先算哪个,-号的优先级是高于++的,所以这里参加运算的应该是没自加之前的-a,也就是-1,其实你那样想,我们以前学过-a就等于0-a,只不过把0省略了,这里应该是0 - (a++) ,++在后时先运算,再自加,a先参加0-a的运算再自加,这时候这里等于-1,加上后面的++b = 3,结果等于-1+3 = 2,但是在参加完运算之后a自加了1,所以a由1变为了2,希望可以帮助到你。
作者: 每天进步一点点    时间: 2014-6-11 07:29
黄莉萍 发表于 2014-6-10 19:50
设int a=1,b=2,c,d,e;执行c=(-a++)+(++b);请问a,b,c的结果是:???
输出结果:a = 2, b = 3, c = 2
首先 ...

等这个运算c=(-a++)+(++b)结束后再进行a自加吗??
++优先级不是高于+运算符和赋值运算符吗=??
作者: 每天进步一点点    时间: 2014-6-11 07:31
武星 发表于 2014-6-10 21:10
我想你是不知道-a++先算哪个,-号的优先级是高于++的,所以这里参加运算的应该是没自加之前的-a,也就是-1, ...

谢谢,有点小明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2