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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 莫瑞伟 中级黑马   /  2014-11-3 21:49  /  1189 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

执行以下程序段后,变量x,y,z的值分别为()。
    int a=1,b=0, x, y, z;
x=(--a==b++)?--a:++b;
y=a++;
z=b;

帮我具体分析一下,谢谢,特别是X的那句

14 个回复

倒序浏览
a=0,b=1,x=-1,y=-1,z=1
回复 使用道具 举报

可是答案是:a = -1      y = -1      z = 1
回复 使用道具 举报
--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;
回复 使用道具 举报
--a==b++,是true, x=-1。--a是先将a减1,此时a=-1;b++,是先进行a==b的判断之后,在将b+1
回复 使用道具 举报
莫瑞伟 发表于 2014-11-3 22:29
可是答案是:a = -1      y = -1      z = 1

答案错了吧……
回复 使用道具 举报
雪寒 发表于 2014-11-3 22:40
--a,先自减,再参与运算,b++是先参与运算,再自加。
运行至x=(--a==b++)?--a:++b; 由于++,--的优先级 ...

好详细,终于明白了,谢谢大哥
回复 使用道具 举报

哈哈哈,原来我看错题了,求的是x的值,我一直看作答案a=-1
回复 使用道具 举报
冰点 发表于 2014-11-3 22:48
--a==b++,是true, x=-1。--a是先将a减1,此时a=-1;b++,是先进行a==b的判断之后,在将b+1 ...

谢谢大哥,随便问下你准备读黑马吗?
回复 使用道具 举报
雪寒 发表于 2014-11-3 23:01
答案错了吧……

是我看错了,哈哈,我以为答案是  a = -1 。
回复 使用道具 举报
运行结果,a=0, 亲不要忘了,a++后a还是会加1的

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

屏幕快照 2014-11-03 下午11.09.26.png
回复 使用道具 举报
楼上正解,y = a++;此时y=-1; 然后a再+1   = 0;
回复 使用道具 举报
jinzhinan 发表于 2014-11-3 23:12
运行结果,a=0, 亲不要忘了,a++后a还是会加1的

实践出真知。。。。勤劳的少年
回复 使用道具 举报
VicenteZ 发表于 2014-11-4 00:19
实践出真知。。。。勤劳的少年

果然敲出来才是有道理啊
回复 使用道具 举报
莫瑞伟 发表于 2014-11-3 23:05
谢谢大哥,随便问下你准备读黑马吗?

嗯,如果学校会放入的话,我肯定去黑马。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马