|
以下代码:
main( )
{
int a=1;
printf("%d,%ld\n",a,a);
}
在Turbo C 2.0下编译。
在Windows 98下得到输出:1,14221313
Windows 98启动按F8进入的Dos输出为:1,11272193
用Windows 98启动盘启动则为:1,6619137
####################################
将上述代码中的数据类型改为short,
则三种情况的输出都为:1,65537
####################################
将数据类型改为long,
输出都为:1,65536;
将声明赋值语句改为 long a=1L,也是一样
####################################
上述情况让我很郁闷,我看的是谭浩强的《C 程序设计》,因为书中
是以Turbo C 2.0为例子,所以找了Turbo C 2.0来学习C 语言,看了前两章有
一些小问题,觉得自己太钻牛角尖了,也就忽略过去了,但这次的试验实在太让人
困惑了,一颗满腔热血学习C语言的菜鸟之心被泼了一盆冷水。
恳请高手为我释疑阿,万分感激!!!
###################################
在gcc下(gcc-2.96):可之short为16位,int和long都为32位,我得到了正确的输出 |
|