c语言第十八题为什么输出结果是负的?

 我来答
White_MouseYBZ
2016-07-02 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6667万
展开全部
short是16位二进制,它的十进制范围是-32768~32767。b=a+1=32767+1=32768就溢出了,使D15位(就是最高位)变成了1。但输出是按%d格式(即32位有符号十进制)的,所以要把符号位向前扩展16位变成32位数字(16进制FFFF8000),这刚好是十进制数-32768的补码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freeeeeewind
2016-07-02 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1357万
展开全部
格式符%d输出有符号整数。
short int 类型字节数为2,最大值为33767(0x7fff)。32767+1=32768(0x8000),这时,%d将32768(0x8000)当成补码,补码的值为-32768
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
装在口袋里的皮卡丘
2016-07-02 · TA获得超过410个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:185万
展开全部
int型数据取值范围是
-32768~32767
当超过32767后就从负的开始了

欢迎追问~~
追问
蟹蟹么么哒
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式