黑马程序员技术交流社区

标题: 一道运算符优先级的题,想了好久一直不太明白,请大牛帮忙解决一下!多谢! [打印本页]

作者: 青青河边草Rt    时间: 2015-6-16 22:36
标题: 一道运算符优先级的题,想了好久一直不太明白,请大牛帮忙解决一下!多谢!
设int a=1,b=2,c,d,e; 执行

c=(-a++)+(++b);
d=(b--)+(++a)-a;
e=(a/(++b))-(a/(--a));
请问a,b,c,d,e的结果是:_______。
作者: 李永方    时间: 2015-6-16 22:49
//c=2,a=2,b=3;d=2,a=3,b=2;e=0,a=2.b=3,
作者: 青青河边草Rt    时间: 2015-6-16 22:51
李永方 发表于 2015-6-16 22:49
//c=2,a=2,b=3;d=2,a=3,b=2;e=0,a=2.b=3,

亲,要的是过程那!
作者: 李永方    时间: 2015-6-16 23:11
int a=1,b=2,c,d,e;

c=(-a++)+(++b);
d=(b--)+(++a)-a;
e=(a/(++b))-(a/(--a));
请问a,b,c,d,e的结果是:____2、3、2、3、0___。
分析:
//(-a++),-与++同一级,又右结合,故先进行a++,而a++的值为1,++b的值为3,故-1+3=2;//此时a=2,b=3,c=2
c=(-a++)+(++b);
//根据优先级,括号中,从左到右,先算括号中得内容,括号中算b--,值为3,b=2,(++a)的值为3,a=3,故,最后得得式子为3+3-3=3
//此时,a=3,b=2,d=3
d=(b--)+(++a)-a;
//括号的优先级大于/,故此时b=3,++b=3,根据括号的结合性,先算第一个括号,此时第二个括号值还并未算,所以第一个扩号a=3,第一个括号中值算完后,第二个括号中--a=2,a=2,故e=1-1=0
e=(a/(++b))-(a/(--a));

所以a=2,b=3,c=2,d=3,e=0

作者: 李永方    时间: 2015-6-16 23:14
青青河边草Rt 发表于 2015-6-16 22:51
亲,要的是过程那!

额。。。。。这个没回好,点错了
作者: 青青河边草Rt    时间: 2015-6-16 23:37
李永方 发表于 2015-6-16 23:14
额。。。。。这个没回好,点错了

非常感谢你的热心回复!
作者: DemonPeter    时间: 2015-6-16 23:47
本帖最后由 DemonPeter 于 2015-6-16 23:50 编辑

  条件;a=1,b=2,c,d,e;
c=(-a++)+(++b)===》 这一步a++,a=1不变,++b,b=3 .有c=(-1)+(3)运算完到下一步确定a=2b=3
d=(b--)+(++a)-a;     ===》b--,b=3不变,a=3   d=(3)+(3)-3   算完到下一步确定a=3,b=2
e=(a/(++b))-(a/(--a)) ===》注意两个点:①减号/加号 具有左结合性(自左至右运算)  所以先
                                                                             a/(++b) ==》    3/3        这时b=3
                                                                      ②除号具有右结合性(自右至左运算)所以先
                                                                              (--a)    a=2        a/(==a) ==》2/2
             这时e=1-1     总结a=2 b=3 c=2  d=3  e=0   
                                                                     
                       
作者: zilin    时间: 2015-6-16 23:53
这道题颇像今天的作业题,答案是23230
作者: 青青河边草Rt    时间: 2015-6-17 08:46
zilin 发表于 2015-6-16 23:53
这道题颇像今天的作业题,答案是23230

就是今天的作业题,可是一直想不太明白!
作者: 华夏文明_2008    时间: 2015-6-17 09:10
这题对我们初学者真的是一个很大的障碍!很好的题目!




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