不是我不明白,这世界变化快!
#include <stdio.h>
main()
{
int i=3,k;
k=(++i)+(++i)+(++i);
printf( "%d ",k);
}
这个题再基础不过,但是我却算错了,
我感觉k应该是15,但编译器告诉我是16,谭浩强的书说是18,为什么?
[解决办法]
楼主是在vc60下编译的吧!
k=(++i)+(++i)+(++i);像这样的写法在不同的编译器下确实会得到不同的结果。
在TC下就得到 18 原因是先进行了三次++i运算,然后得到i为6 然后k = i + i +i结果为 18
像k=(++i)+(++i)+(++i)这种写法是不被提倡的。除非你很明白你的编译器将要做什么。但即使是这样。也会为程序的移植带来隐患。
[解决办法]
我用4个编译器编译了这个程序,
tc 和win-tc是18,VC和G++是16
[解决办法]
we must keep in mind that Dont use more than one "++ " or "-- " operator in one expression