问题描述:
定义int a=5,b;则执行表达式b=++a*--a之后,变量b的值为:
答案:25
请解释详细一点,本人认为++a后为6再--a为5,所以应为6*5=30.请分析一下错误原因。
谢谢!!
问题解答:
这种题目是很唬人的,我的看法如下:
b=++a*--a 等价于 b=(++a)*(--a);
对付这种题目 ,把原式写成:
++a; --a; b=a*a;就行了。++a; --a;肯定在乘法之前进行。
楼主,你只注意了++a 返回6,可是--a也在乘法前进行,它返回5
同理:
j=5;
q=(++j)+(++j)+(++j); 等价于: ++j;++j;++j; q=j+j+j;
q=24;
fengzhizhanshi,你的回答是错的,运行结果就是25
我的感觉也应该是30.
最好的验证方法是到电脑上运行一下,这样就知道答案了。