C语言中的自加运算符是怎么回事?

发布时间:2024-05-15 05:23 发布:上海旅游网

问题描述:

定义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.
最好的验证方法是到电脑上运行一下,这样就知道答案了。

热点新闻