黑马程序员技术交流社区

标题: 自增自减问题 [打印本页]

作者: 莫瑞伟    时间: 2014-11-3 21:49
标题: 自增自减问题
执行以下程序段后,变量x,y,z的值分别为()。
    int a=1,b=0, x, y, z;
x=(--a==b++)?--a:++b;
y=a++;
z=b;

帮我具体分析一下,谢谢,特别是X的那句
作者: 潘明刚    时间: 2014-11-3 22:11
a=0,b=1,x=-1,y=-1,z=1
作者: 莫瑞伟    时间: 2014-11-3 22:29
潘明刚 发表于 2014-11-3 22:11
a=0,b=1,x=-1,y=-1,z=1

可是答案是:a = -1      y = -1      z = 1
作者: 雪寒    时间: 2014-11-3 22:40
--a,先自减,再参与运算,b++是先参与运算,再自加。
运行至x=(--a==b++)?--a:++b; 由于++,--的优先级高于==,
故 先判断(--a == b++)即(0==0) 为1   此时a=0,b=1;
则x的值取--a,即x=-1,此时a=-1,b=1;
y= a++  y的值为-1, 此时a =0;
z=b  z的值为1

即x=-1,y=-1,z=1, a=0,b=1;
作者: 雪寒    时间: 2014-11-3 23:01
莫瑞伟 发表于 2014-11-3 22:29
可是答案是:a = -1      y = -1      z = 1

答案错了吧……
作者: 莫瑞伟    时间: 2014-11-3 23:02
雪寒 发表于 2014-11-3 22:40
--a,先自减,再参与运算,b++是先参与运算,再自加。
运行至x=(--a==b++)?--a:++b; 由于++,--的优先级 ...

好详细,终于明白了,谢谢大哥
作者: 莫瑞伟    时间: 2014-11-3 23:04
潘明刚 发表于 2014-11-3 22:11
a=0,b=1,x=-1,y=-1,z=1

哈哈哈,原来我看错题了,求的是x的值,我一直看作答案a=-1
作者: 莫瑞伟    时间: 2014-11-3 23:05
冰点 发表于 2014-11-3 22:48
--a==b++,是true, x=-1。--a是先将a减1,此时a=-1;b++,是先进行a==b的判断之后,在将b+1 ...

谢谢大哥,随便问下你准备读黑马吗?
作者: 莫瑞伟    时间: 2014-11-3 23:07
雪寒 发表于 2014-11-3 23:01
答案错了吧……

是我看错了,哈哈,我以为答案是  a = -1 。
作者: jinzhinan    时间: 2014-11-3 23:12
运行结果,a=0, 亲不要忘了,a++后a还是会加1的

屏幕快照 2014-11-03 下午11.09.26.png (23.19 KB, 下载次数: 62)

屏幕快照 2014-11-03 下午11.09.26.png

作者: 诺微_    时间: 2014-11-3 23:42
楼上正解,y = a++;此时y=-1; 然后a再+1   = 0;
作者: VicenteZ    时间: 2014-11-4 00:19
jinzhinan 发表于 2014-11-3 23:12
运行结果,a=0, 亲不要忘了,a++后a还是会加1的

实践出真知。。。。勤劳的少年
作者: 莫瑞伟    时间: 2014-11-4 00:20
VicenteZ 发表于 2014-11-4 00:19
实践出真知。。。。勤劳的少年

果然敲出来才是有道理啊




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