黑马程序员技术交流社区

标题: 如何计算的 [打印本页]

作者: 紮西诺尔布    时间: 2015-4-11 00:18
标题: 如何计算的
设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
作者: 董zhx    时间: 2015-4-11 00:38
同学:handshake,(-a++)=-(a++),我感觉这是难点,剩下的一步一步算就行
作者: 董zhx    时间: 2015-4-11 00:39
奥,我看错了,一步步紧接着算,把每一次加减的值记下来,在推倒
作者: wws    时间: 2015-4-11 01:13
首先,e只与a,b有关,计算e的时候,a,b各经过2次自运算,故a为3,b为2,所以e=3/3 - 3/2 = 0
作者: 可乐zj    时间: 2015-4-11 01:29
经过第一行,a = 2,b = 3;第二行运行后 a = 3,b = 2;第三行计算  c = (3/3)-(3/2) = 0
作者: sixleaves    时间: 2015-4-11 02:44
观察表达式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
搞不懂第一行c=(-a++)+(++b);之后为啥a=2;
作者: 新手小渣渣    时间: 2015-4-11 12:26
我觉得搞明白表达式的值和变量的值整明白就哦了!!表达式分加前取值和加后取值,变量不分例如:
int a=1;
b=a++;
a 的值是2,但是b的值是1
作者: 紮西诺尔布    时间: 2015-4-14 23:48
董zhx 发表于 2015-4-11 00:38
同学,(-a++)=-(a++),我感觉这是难点,剩下的一步一步算就行

明白了,非常感谢!!!!!!




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