char a=100;char b=200;char c=0;c=a+b;printf("%d,%d",c,a+b);输出结果是44,300,为什么44
答案:2 悬赏:70 手机版
解决时间 2021-02-15 06:15
- 提问者网友:留有余香
- 2021-02-14 17:10
char a=100;char b=200;char c=0;c=a+b;printf("%d,%d",c,a+b);输出结果是44,300,为什么44
最佳答案
- 五星知识达人网友:街头电车
- 2021-02-14 17:54
计算机中存放的数据是用二进制数来表示的
8位(bit)表示一个字节(Byte),16位(bit)表示一个字(Word)
char 型变量为8位的 所以 c 只能放下8位二进制数 可以表示 0~255
300>255
300 表示成二进制数为 1 00101100 要用9位才能表示
只能取它的低8位 00101100 放入char 型的 c 中 这就是十进制数 44
8位(bit)表示一个字节(Byte),16位(bit)表示一个字(Word)
char 型变量为8位的 所以 c 只能放下8位二进制数 可以表示 0~255
300>255
300 表示成二进制数为 1 00101100 要用9位才能表示
只能取它的低8位 00101100 放入char 型的 c 中 这就是十进制数 44
全部回答
- 1楼网友:杯酒困英雄
- 2021-02-14 18:54
char 是8位的 两个 char 相加返回还是char型的
a+b=300 = 256 + 44, 而256 是第9位上一个1, 超出8位溢出,
所以只剩下44了.
如果改成下式就能输出300了.
printf("%d,%d",c,int(a)+int(b));
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯