TurboC环境下,int为2字节。在此前提下,谭教授的表述没有错


所有跟贴·加跟贴·新语丝读书论坛

送交者: Yush 于 2009-03-12, 14:09:50:

回答: 32767+1, one more time 由 JJZ 于 2009-03-12, 12:41:52:

我没有这本书,猜测可能是书上给的示例程序或张云楼自己写的程序的输出语句有问题。程序可能是这样的:
int a;
int b;
a=32767;
b=a+1;
printf("%d\n",b);

上述程序输出-32768。如果将其中的int b;改为long b,输出仍为-32768,原因是printf函数按%d两字节带符号整数格式,取堆栈中传递过来的4字节长整数参数的低两字节输出。

需要将printf格式相应改为"%ld\n",才能输出预期结果32768。




所有跟贴:


加跟贴

笔名: 密码: 注册笔名请按这里

标题:

内容: (BBCode使用说明