#include <stdio.h> void main() { char c=256; int a=c; printf("%d\n",a); }
3个回答
展开全部
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是负数。而取值方法使用“补码"。
至于补码的详细信息,请参考
相信看完之后您就理解了。
您的char c=256;256用二进制表示的话是100000000,也就是低8位全部为0。而char类型的c只能保存8bit的数据(也就是低8位)所以实际上c=0。
同理,255的二进制表达方式为11111111,因为char类型是有符号的类型(其对应的无符号类型为unsigned char),所以其最高位为符号位,符号位为0时时正数,为1是负数。而取值方法使用“补码"。
至于补码的详细信息,请参考
相信看完之后您就理解了。
展开全部
char c的取值范围是-127到127。所以当c=256时,溢出了。256的16进制为100,高位1溢出,所以,输出为0
当c为255时,16进制是ff,根据补码,就是-1。所以输出为-1
当c为255时,16进制是ff,根据补码,就是-1。所以输出为-1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数学题算一算就知道,我只给方法
把整型值赋给字符型,字符型拿到的是整型的低8位(二进制)。
%d表示输出为十进制有符号整数,如何换算参考补码表示
把整型值赋给字符型,字符型拿到的是整型的低8位(二进制)。
%d表示输出为十进制有符号整数,如何换算参考补码表示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询