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

关于字符输出的问题

首页

关于字符输出的问题

#include 
int main()
{
char c1,c2;
c1=197;
c2=198;
printf("c1=%c,c2=%c ",c1,c2);
printf("c1=%d,c2=%d ",c1,c2);
return 0;
}
第一行会输出:c1=?c2=?
第二行输出:c1=-59,c2=-58
为什么会输出这些的?
若将程序第3行改为int c1,c2时,则输出:
c1=?c2=?
c1=197,c2=198;
主要解释第一行输出,为什么跟上一个输出一样?

提交回答

全部答案

    2018-09-20 01:24:12
  • 一个字符型数据既可以用整形输出也可以用字符形输出
    这个主要是c里面的隐类型转换问题,其实很简单的,就是当char类型可以隐式转化为int类型,int类型也可以隐式转化为char类型
    先说第一个为什么
    当你要以%c的形式输出,则会在阿斯克码表(ASCII表)中查找197和198相对应的字符,如果是没有的就输出了?,不信你自己翻翻c语言的附录看
    那个-59跟-58呢,这个就跟你的编译系统有关了,主要是因为有些编译系统在处理char类型转化为int类型的时候有可能会将int类型处理成带符号的整数,取值范围为-128~127,当用%d对一个字符进行输出时,如果该字符的ASCII在0~127范围内,则输出一个整数,如果在128到255此时会输出一个负整数

    开***

    2018-09-20 01:24:12

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 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
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):