A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 每天进步一点点 中级黑马   /  2014-6-10 11:52  /  1291 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 每天进步一点点 于 2014-6-12 21:50 编辑

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


请高人详细讲解,谢谢

6 个回复

倒序浏览
亲,重点讲解(-a++)的变化过程,以及a是怎么变化的。
回复 使用道具 举报
设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 自加时不考虑这个负号
希望我地回答能帮到你

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
关键点就是-号什么时候算,其实它是在a自加后算的,这样就是-1+3了,
回复 使用道具 举报
我想你是不知道-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-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-10 21:10
我想你是不知道-a++先算哪个,-号的优先级是高于++的,所以这里参加运算的应该是没自加之前的-a,也就是-1, ...

谢谢,有点小明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马