这个c程序怎么回事

来源:百度知道 编辑:UC知道 时间:2024/05/30 23:55:05
int main(int argc, char *argv[])
{int i =7;
int j,k,l,m;
j=++i;
k=++i;
l=++i;
i=7;
m=(++i)+(++i)+(++i);
printf("%d+",j);printf("%d+",k);printf("%d",l);printf("=%d",m);
system("PAUSE");
return EXIT_SUCCESS;
}
运行结果是 8+9+10=28 哪里出错了么
为什么不是 最后i=10 再算m=i+i+i=30了呢,最后还有一个(++i),三个(++i)不一样么

m=(++i)+(++i)+(++i);

相当于
i=i+1;m=i+(++i)+(++i);
此时i=8

m=i+(++i)+(++i);
相当于
i=i+1;m=i+i+(++i);
此时i=9

然后就是我们常见的算法了
m = 9+9+10 = 28

另外 不同的编译器有不同的结果

我怎么算出来是8+9+10=27啊