b = ++a * --a的问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 01:06:47
int a = 5,b;
b = ++a * --a;
printf("%d",b);
运行后b=25 这个结果我没想到
我试了几次
如果int a=5,b=9,c;
c=++a * --b;
c=48
那么具体是怎么个运算顺序呢~
如果说前面的++没有运算,后面为什么会又有5呢?
怎么感觉前后矛盾的情况下才能够得出25的结果
请教~

b=++a*--a ,先是a自增变成6,然后又要自减a又变成了5,所以b=5*5=25了
而int a=5,b=9,c;
c=++a * --b; //a 自增变成了6,b自减变成了8
c=6*8=48

b=++a*--a;这句相当于这三句:a=a+1;a=a-1;b=a*a;当a是5时,则a=5+1=6;a=6-1=5;b=5*5=25了。
同样c=++a * --b; 也就相当于:a=a+1;b=b-1;c=a*b;就是a=6;b=8;c=6*8=48了。
这样明白了吧