读书人

不是小弟我不明白这世界变化快

发布时间: 2012-03-29 12:53:12 作者: rapoo

不是我不明白,这世界变化快!
#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

读书人网 >C语言

热点推荐