c语言第十八题为什么输出结果是负的?
3个回答
展开全部
short是16位二进制,它的十进制范围是-32768~32767。b=a+1=32767+1=32768就溢出了,使D15位(就是最高位)变成了1。但输出是按%d格式(即32位有符号十进制)的,所以要把符号位向前扩展16位变成32位数字(16进制FFFF8000),这刚好是十进制数-32768的补码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
格式符%d输出有符号整数。
short int 类型字节数为2,最大值为33767(0x7fff)。32767+1=32768(0x8000),这时,%d将32768(0x8000)当成补码,补码的值为-32768
short int 类型字节数为2,最大值为33767(0x7fff)。32767+1=32768(0x8000),这时,%d将32768(0x8000)当成补码,补码的值为-32768
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int型数据取值范围是
-32768~32767
当超过32767后就从负的开始了
欢迎追问~~
-32768~32767
当超过32767后就从负的开始了
欢迎追问~~
追问
蟹蟹么么哒
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询