下列程序执行后的输出结果是 A) -32767 B) FFFE C) -1 D) -32768 m

下列程序执行后的输出结果是A)-32767B)FFFEC)-1D)-32768main(){charx=0xFFFF;printf("%d/n",x--);}为什么选c?... 下列程序执行后的输出结果是 A) -32767 B) FFFE C) -1 D) -32768
main() { char x=0xFFFF; printf("%d /n",x--); } 为什么选c?
展开
 我来答
百度网友a45b1ec
2013-03-17 · TA获得超过7846个赞
知道大有可为答主
回答量:3800
采纳率:55%
帮助的人:3775万
展开全部
printf("%d /n",x--)输出的是x,然后才减去1,x是以整数输出的,而整数是以补码形式存放的,所以需要求出0xFFFF的原码,即0x8001,对应的二进制数的最高位是符号位1(表示是负数),也就是是-0x0001,对应的十进制数就是-1,所以就输出了-1。
风若远去何人留
推荐于2017-12-06 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部
char x=0xFFFF;
x为char, 只有8位,所以实际赋值为x=0xFF, 也就是-1. (不懂的话, 复习一下补码).
然后 输出x--, 为先取值 再自减.
所以会输出自减前的值-1.
于是选C
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式