中易网

关于字符输出的问题

答案:6  悬赏:60  
解决时间 2021-01-14 05:28
  • 提问者网友:情歌越听越心酸
  • 2021-01-13 15:40
关于字符输出的问题
最佳答案
  • 二级知识专家网友:像个废品
  • 2021-01-13 17:09
一个字符型数据既可以用整形输出也可以用字符形输出
这个主要是c里面的隐类型转换问题,其实很简单的,就是当char类型可以隐式转化为int类型,int类型也可以隐式转化为char类型
先说第一个为什么
当你要以%c的形式输出,则会在阿斯克码表(ASCII表)中查找197和198相对应的字符,如果是没有的就输出了?,不信你自己翻翻c语言的附录看
那个-59跟-58呢,这个就跟你的编译系统有关了,主要是因为有些编译系统在处理char类型转化为int类型的时候有可能会将int类型处理成带符号的整数,取值范围为-128~127,当用%d对一个字符进行输出时,如果该字符的ASCII在0~127范围内,则输出一个整数,如果在128到255此时会输出一个负整数
全部回答
  • 1楼网友:风格不统一
  • 2021-01-13 21:29
首先,你的代码有问题
#include "stdio.h"
int main()
{
char c1,c2;
c1=(char)197;
c2=(char)198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
这是正确的方式,其次,即使改成这样你会防线输出的还是c1=?,c2=?, 原因是没有任何一个字符的ansi值是197或198.所以输出的就是问号,如果改成c1=(char)97;c2=(char)98; 那么输出的结果就是c1=a,c2=b
c1=97,c2=98
希望对你有帮助
  • 2楼网友:掌灯师
  • 2021-01-13 21:15
这个很简单啊,197 198对应的ascii码值可能不显示
要是c1=65的话,可以显示出来时A
  • 3楼网友:不如潦草
  • 2021-01-13 20:24
请看看ASCII码表就知道了。追问我看了,0~255都有对应的字符
  • 4楼网友:迷人又混蛋
  • 2021-01-13 18:48
应为第一个printf你格式化输出%c就是输出单个字符,而初始化给他有3个字符,计算机就无法识别就输出了错误的?字符。就算把它定义成int,安代码它会把c1强制转换成char再输出,这就变得和上面情况一样了。
  • 5楼网友:渡鹤影
  • 2021-01-13 18:40
ASCII码表中,127以前字符才可以显示;127以后用于地区字符扩充。因为197,198超过127,所以显示为问号。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息