b=(++a)+(++a)+(++a)的结果在TC和VC++中是两个结果~!

来源:百度知道 编辑:UC知道 时间:2024/06/28 09:49:34
#include<stdio.h>
main()
{
int a,b;
a=10;
b=(++a)+(++a)+(++a);
printf("b=%d \n",b);
}
在TC中为39,在VC++中为37..请教各位高手为什么啊???

可以明确地告诉你,这是由于编译系统在处理细节上的不同而造成的
如果你看过谭浩强的红皮书,就会知道这个道理
同时也告诉你,完全不用知道为什么会这样:

因为这样的语句被称为“rubish code”,在真正的实践开发中是绝不可能出现,同时也是必须要避免出现的

良好的编程规范,应当编写清楚无歧异的,不依赖于编译系统的代码,你只用知道这是由于TC和VC细节上的不同造成的就行了

对于错的程序,得不到你想要的结果就不要抱怨了。
C中一条语句里不能对同一个变量进行两次或以上的递增、递减操作。

请搜索“C语言 序列点”

这个很正常,原因在于tc和vc的编译器来自于不同的公司,那么优先级上就会有差别的,从实质上说,都没有错,是因为不同的编译器理解不同罢了

这样的语句,在C++标准中是非法的,一条语句中最好避免 两个自加或自减运算,至于它的结果,完全依赖编译器的实现..