#include <stdio.h> void main() { char c=256; int a=c; printf("%d\n",a); }
答案:3 悬赏:40 手机版
解决时间 2021-04-15 07:48
- 提问者网友:戎马万世
- 2021-04-14 13:04
#include <stdio.h> void main() { char c=256; int a=c; printf("%d\n",a); }
最佳答案
- 五星知识达人网友:逃夭
- 2021-04-14 13:20
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是负数。而取值方法使用“补码"。
至于补码的详细信息,请参考
相信看完之后您就理解了。
全部回答
- 1楼网友:野味小生
- 2021-04-14 14:42
数学题算一算就知道,我只给方法
把整型值赋给字符型,字符型拿到的是整型的低8位(二进制)。
%d表示输出为十进制有符号整数,如何换算参考补码表示
把整型值赋给字符型,字符型拿到的是整型的低8位(二进制)。
%d表示输出为十进制有符号整数,如何换算参考补码表示
- 2楼网友:掌灯师
- 2021-04-14 13:36
char c的取值范围是-127到127。所以当c=256时,溢出了。256的16进制为100,高位1溢出,所以,输出为0
当c为255时,16进制是ff,根据补码,就是-1。所以输出为-1
当c为255时,16进制是ff,根据补码,就是-1。所以输出为-1
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯