问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

初学C语言,关于int和char

发布网友 发布时间:2022-04-23 12:32

我来回答

4个回答

热心网友 时间:2023-10-14 20:36

没有问题啊,虽然int表示的范围比char大,但是在合理的输入情况下并不会出现你所说的情况。
代码:
#include
int main()
{
int a[4]={'a','z','A','Z'};
for(int i=0;i<4;i++)
printf("%c\t",a[i]);
printf("\n");
for(int i=0;i<4;i++)
if(a[i]>='a'&&a[i]<='z')
{
a[i]=a[i]-32;
}else{
a[i]=a[i]+32;
}
for(int i=0;i<4;i++)
printf("%c\t",a[i]);
return 0;
}
运行结果:

热心网友 时间:2023-10-14 20:37

问题在使用了scanf这个函数。scanf对变量的类型与控制符的类型对应要求是很严格的,用%c控制输入int型变量a是不妥的。你换成a=getchar();,相信就没有什么问题了。原来的代码实际上if(a>='a'&&a<='z')这里无论输入大写还是小写都不执行,一直在执行else后的语句,所以输入大写时+32变成了小写,而输入小写时+32就走出字符范围了,没有对应的字符,编译器就用?代替输出了。使用类型敏感函数scanf时这一点要特别注意。如果非要使用scanf,那把if()的()中的变量要强制一下,可以写成if ((char)a>='a'&&(char)a<='z')也应该是可以的。供参考。追问好了,懂了

热心网友 时间:2023-10-14 20:37

因为,根本没有走进if (a>='a'&&a<='z')这个逻辑
也就是,无论你输入的是小写的字母还是大写的字母,最终都会执行a=a+32这个代码,
大写自然能转小写。
而小写的字母值比较大,加32后,都越界了,所以是乱码。

热心网友 时间:2023-10-14 20:38

取值范围不同,int 取值范围 -32768到+32767,char 的取值范围 -128到+127。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? 是不是所有情况下char 和 int 都是通用的? 单片机c程序int和char的区别。 C++中,int型和char型相乘如何运算? C语言中,int和char型 char类型与int类型之间如何转换 int 和char可以互相转换吗 C语言 int和char 不是说int和char类型通用吗,那为什么这个。。。 C语言中的int char 的区别 int 和char的问题 char和int的关系 C语言中int 和char怎么读? C语言中,char 和 int 的区别是什么? int和char什么区别 我170身高,体重才51KG,每天在仰卧起坐,俯卧撑,跑步,求问健身达人,我该怎么做,才能长的壮一点。 int与char区别 身高186体重140,怎么在宿舍练腹肌和胸肌,谢谢 C语言中 char与int有什么区别? - 信息提示 俯卧撑和仰卧起坐的准备动作 或者叫热身的视频教程 在哪里找 求资源 华罗庚的故事(50字) 数学家华罗庚的故事? 关于华罗庚的故事? 华罗庚的具体事例 数学奇才华罗庚的故事30字 关于华罗庚的事迹 华罗庚数学家的故事? 数学家华罗庚的故事 150字左右 华罗庚的数学故事二十字 大数学家华罗庚怎么死的? 数学家华罗庚的故事,急急急!万分感激!! 数学家华罗庚的故事(100字左右) 华罗庚的事迹? 拉萨火车是什么时候开通的?哪年 拉萨是那年通火车 请问谁知道到拉萨的火车什么时候开通? 成都通往拉萨的火车是那年通车的 北京至拉萨的火车是哪年通火车的?2000年前北京到拉萨火车路线 请问,上海到拉萨的火车什么时候开通的? 北京至拉萨的火车是哪年通火车的?