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日

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统