7.463 2022-04-27 10:00 采纳率: 100%
浏览 22
已结题

不太理解为什么c2为B啊?

include <stdio.h>

int main(void)
{
int a,b=322;
float x,y=8.88;
char c1='k',c2;
a=y;
printf("%d\n",a);
x=b;
a=c1;
c2=b;
printf ("%f,%d,%c\n", x,a,c2);
return 0;
}

  • 写回答

2条回答 默认 最新

  • 树下等苹果 2022-04-27 10:27
    关注

    b的值为322。赋给c2后,c2对应ascll码为322的字符,但是ascll是由八位二进制数组成,最大值255(即1111_1111),当数值超过255时,高位丢失。322的二进制为:0001_0100_0010,截取低八位为:0100_0010,转换为10进制为66,对应ascll表为字符“B”

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月3日
  • 已采纳回答 5月2日
  • 创建了问题 4月27日