问个问题:当i=3时,i++*++i+i--*--i的值为什么等于18而不是30?
昨天看c语言教学视频,里面有道题是“当i=3时,i++*++i+i--*--i”,老师在讲解的时候视频就没有了,真是郁闷。我心算是3*5+5*3=30,但拿到win-tc上面算却是18,后插了些i的每一部变化也一样:#include "stdio.h"
#include "conio.h"
main()
{
int i=3,a,b,c,d,e,f,g,h,r,mb;
b=i++;
f=i;
c=++i;
g=i;
d=i--;
h=i;
e=--i;
r=i;
a=(i++)*(++i)+(i--)*(--i);
mb=b*c+d*e;
printf("i=%d\n",i);
printf("(i++)*(++i)+(i--)*(--i)=%d\n",a) ;
printf("b=%d,c=%d,d=%d,e=%d\n",b,c,d,e);
printf("f=%d,g=%d,h=%d,r=%d\n",f,g,h,r);
printf("b*c+d*e=%d\n",mb) ;
getch();
}
答案:
i=3
(i++)*(++i)+(i--)*(--i)=18
b=3,c=5,d=5,e=3
f=4,g=5,h=4,r=3
b*c+d*e=30
不懂呀,问过来人这是为啥呢?