C语言中运算符++和——问题

#include<stdio.h>main(){inta=2,b,c,d,e,f;b=a++*a++*a++;a=2;c=++a*++a*++a;a=2;d=++a*a+... #include <stdio.h>
main()
{
int a=2,b,c,d,e,f;
b=a++*a++*a++;
a=2;
c=++a*++a*++a;
a=2;
d=++a*a++*++a;
a=2;
e=--a*a++*++a;
printf ("%d,%d,%d,%d\n",b,c,d,e);
}

运算出来的c为什么是80,不应该是60吗?
展开
 我来答
总该有办法吧
2014-07-02 · TA获得超过227个赞
知道小有建树答主
回答量:222
采纳率:93%
帮助的人:146万
展开全部
可以这样理解,c=++a*++a*++a;的运算步骤如下:

1、++a先运算,a=3
2、第二个++a进行运算,a=4,注意这个时候a已经等于4了,也就是第一步运算出来的a=3被覆盖了
3、运算++a*++a就是4*4=16
4、运算最后一个++a,a=5,为什么这里不覆盖前面的运算呢?因为前面运算的结果不存在a中,而是在临时的内存中
5、最后运算16*5=80
百度网友b4626e5cb
2014-07-02 · TA获得超过139个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:161万
展开全部
++的优先级比乘高,应该先算++,三次++后a=5,c应该等与125
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式