小问题,求解!
#include <stdio.h>
void main()
{
int i=5,j=5,t,p;
p=(i++)+(i++)+(i++);
printf("p=%d,i=%d\n",p,i);
t=(++j)+(++j)+(++j);
printf("t=%d,j=%d\n",t,j);
}
这里的结果t=22,求解答。我算的是21,不知道为什么!
[解决办法]
C-Free 5.0 下运行结果:t = 22
[解决办法]
cb2010下t=24,这个计算应该与具体的编译器有关
cb2010的计算顺序应该是
j = j + 1;
j = j + 1;
j = j + 1;
t = j + j + j;
如果结果为21,计算顺序应该是
j = j + 1;
t = j;
j = j + 1;
t += j;
j = j + 1;
t += j;
如果结果为22,计算顺序应该是
j = j + 1;
j = j + 1;
int tmp = j + j;
j = j + 1;
t = j + tmp;