#include <stdio.h> void main() { char c=256; int a=c; printf("%d\n",a); }

输出为0,求解释。若c=255,则a=-1;... 输出为0,求解释。若c=255,则a=-1; 展开
 我来答
intehel
推荐于2017-10-06 · TA获得超过1293个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1775万
展开全部
char只有1个字节(BYTE),也就是8个位(bit)
您的char c=256;256用二进制表示的话是100000000,也就是低8位全部为0。而char类型的c只能保存8bit的数据(也就是低8位)所以实际上c=0。

同理,255的二进制表达方式为11111111,因为char类型是有符号的类型(其对应的无符号类型为unsigned char),所以其最高位为符号位,符号位为0时时正数,为1是负数。而取值方法使用“补码"。

至于补码的详细信息,请参考
相信看完之后您就理解了。
召走刀文
2012-10-12 · TA获得超过1204个赞
知道小有建树答主
回答量:597
采纳率:57%
帮助的人:233万
展开全部
char c的取值范围是-127到127。所以当c=256时,溢出了。256的16进制为100,高位1溢出,所以,输出为0
当c为255时,16进制是ff,根据补码,就是-1。所以输出为-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sure_lin1
2012-10-12
知道答主
回答量:11
采纳率:0%
帮助的人:9.1万
展开全部
数学题算一算就知道,我只给方法
把整型值赋给字符型,字符型拿到的是整型的低8位(二进制)。
%d表示输出为十进制有符号整数,如何换算参考补码表示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式