请教表达式 i++*++i+i--*--i 的值
请教高手,表达式 i++*++i+i--*--i 的值的疑问.
小弟重新学习C语言的时候碰到个这个样的表达式,i++*++i+i--*--i
小弟用两种输出方式得到结果去不一样,特来请教高手指点下小弟。
在TURBO C 2.0 写的程序
#include<stdio.h>
void main(){
int i=3,j;
clrscr();
j=i++*++i+i--*--i;
printf("j=%d i=%d",j,i);
i=3;
printf("\n%d,i=%d",i++*++i+i--*--i,i);
}
运行的结果:
j=18 i=3
30,i=3
同样的表达式,赋值给J后输出结果18,直接用输出的却是30 ???
请教达人找个是怎么回事
补充:某个视频教程给出的解释,我晕ing···
结果18的算出方式 :表达式中全部i的值都是 3 ;
1:++i 和--i 最先同时计算
2:3*4+3*2 =18
3:i++ 和i-- 最后计算
(这样算的话i又是怎么得出3的?是不是种解释有问题,结果是18,但不是这样得出来的?!)
结果30的:运算一次++或-- 后,对i赋值一次
1:i++ =3 i=4
2:++i =5 i=5
3:i-- =5 i=4
4:--i =3 i=3
5:i++*++i+i--*--i,i=3*5+5*3=30