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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紮西诺尔布 中级黑马   /  2015-4-11 00:18  /  1012 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

设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____。
最后e的值为什么是0

8 个回复

倒序浏览
同学:handshake,(-a++)=-(a++),我感觉这是难点,剩下的一步一步算就行
回复 使用道具 举报
奥,我看错了,一步步紧接着算,把每一次加减的值记下来,在推倒
回复 使用道具 举报
首先,e只与a,b有关,计算e的时候,a,b各经过2次自运算,故a为3,b为2,所以e=3/3 - 3/2 = 0
回复 使用道具 举报
经过第一行,a = 2,b = 3;第二行运行后 a = 3,b = 2;第三行计算  c = (3/3)-(3/2) = 0
回复 使用道具 举报
观察表达式e、只和a、b有关。
而a、b的后缀与前缀自增加运算符因为都被括号包括,所以都是相当于自身+1而以。
所以执行完第1行:a = 2. b = 3
        执行完第2行:a = 3, b = 2;
(a/(++b))-(a/(--a)); 按照括号深度,右左向右计算,先算++b,。则 b = 3,再算 a / 3 = 1.
接着算--a后, a = 2 再算a / 2  = 1.最后一步1 - 1 = 0
回答完毕~
回复 使用道具 举报
wzboy 中级黑马 2015-4-11 11:31:12
7#
搞不懂第一行c=(-a++)+(++b);之后为啥a=2;
回复 使用道具 举报
我觉得搞明白表达式的值和变量的值整明白就哦了!!表达式分加前取值和加后取值,变量不分例如:
int a=1;
b=a++;
a 的值是2,但是b的值是1
回复 使用道具 举报
董zhx 发表于 2015-4-11 00:38
同学,(-a++)=-(a++),我感觉这是难点,剩下的一步一步算就行

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