C语言关于整型数据溢出的一个问题请教

我是一名C语言的初学者,最近在谭浩强先生的《C语言程序设计》中看到有一道关于整型数据溢出的例题(如下),#include<stdio.h>main(){inta,b;a=... 我是一名C语言的初学者,最近在谭浩强先生的《C语言程序设计》中看到有一道关于整型数据溢出的例题(如下),
#include <stdio.h>
main()
{ int a,b;
a=32767;
b=a+1;
printf(“%d,%d”,a,b);

这道题的运行结果为“32767,-32768”,现在我想得到b=32768的结果,根据书中的提示,将变量b改成long型可以得到预期的结果32768。我写的程序如下:
#include <stdio.h>
main()
{ long a,b;
a=32767;
b=a+1;
printf(“%d,%d”,a,b);
}
我在Turbo C上运行这个程序,得到的结果是“32767,0”,现在我不知道错误在哪里,恳请各位大侠不吝赐教,小月亮不胜感激!
非常感谢大家,我的问题才一天就有这么多人来为我解答。我通过将各位大侠的答案一一在turbo c2.0上运行。运行了如下的程序
#include <stdio.h>
main()
{ long a,b;
a=32767;
b=a+1;
printf("%ld,%ld",a,b); /*当然zjzl1001的写法也可以*/
}
输出的结果是“32767,32768”。部分回答者说在自己的机上运行能得到预期的结果,这可能是编译器的问题。所以shijp、WXD11011,zjzl11001的答案都是符合我的问题要求的,不过悬赏分只能给一个人,那就是第一个回答正确的,不好意思^-^总之小月亮非常谢谢大家帮我解决这个疑惑,以后有什么问题我会再来请教大家的!谢谢大家热情的帮助!
展开
 我来答
百度网友ded303bc6
2007-09-19 · 超过29用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:77.5万
展开全部
long 型数据要加附加格式说明符 l 。
输出的格式:
printf("%ld,%ld",a,b);
注意,2个数都是用"%ld"格式输出,否则可能会得到意外的结果。
你可以试试用下面的几个语句依次替换printf(“%d,%d”,a,b);
1.printf("%d,%ld",a,b);
2.
printf("%d\n",a);
printf("%d\n",b);
3.
printf("%ld\n",a);
printf("%ld\n",b);
你会发现2,3的输出结果是一样的,而1的输出结果却不是预期的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d3e418b2c
2007-09-19 · TA获得超过2195个赞
知道大有可为答主
回答量:1361
采纳率:0%
帮助的人:1696万
展开全部
应该不会的,除非你的编译器的long型变量只有2个字节,我这里运行的结果是32767,32768,不是0。long至少有4个字节,32768怎么会溢出呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wakin528
2007-09-19 · TA获得超过200个赞
知道答主
回答量:149
采纳率:0%
帮助的人:122万
展开全部
main()
{ long a,b;
a=32767;
b=a+1;
printf(“%f,%f”,a,b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WXD110114dccd8
2007-09-19 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.6万
采纳率:43%
帮助的人:7860万
展开全部
printf(“%d,%d”,a,b);

改为:

printf(“%d,%ld”,a,b);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
声琨GQ
2007-09-19 · TA获得超过282个赞
知道答主
回答量:369
采纳率:0%
帮助的人:202万
展开全部
应该不会吧
printf(“%ld,%ld”,a,b); 试试?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式