首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-29 
不是我不明白,这世界变化快!#includestdio.hmain(){inti3,kk(++i)+(++i)+(++i)printf( %d ,k)}这

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

热点排行