永发信息网

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
全部回答
  • 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));
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯