爱问知识人 爱问教育 医院库

一个简单的C语言问题

首页

一个简单的C语言问题

mian()
{char c1,c2;
c1=300;
c2=400;
printf("%c,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
}
为什么输出结果是:
,,E
44,-112
请告诉我原因.

提交回答
好评回答
  • 2018-02-10 03:43:16
    char型的变量在大部分编译系统里是一个8位变量。也就是其对应的整形绝对量是0-255;
    你把300和400强行赋值给一个8位char型变量,那么溢出部分自动舍弃。具体分析:
    300的二进制形式为100101100,400的二进制是110010000;赋值给8位量后,300就变成了101100,400就变成了10010000,又由于这些都是8位系统的补码形式,因此转换为整数后,300就等于44,400就等于-112。这就是你printf("%d,%d\n",c1,c2)输出是44,-112的原因。
    而如果按照等效原码形式来看,300等于44,400等于144,44的acsii码是“,”,144的acsii是一个带有小上标的“E”。这就是你printf("%c,%c\n",c1,c2)得到,,E的原因。

    E***

    2018-02-10 03:43:16

其他答案

  • 程序设计 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):