新手求助
下面的程序中 if (ch >= '0' && ch <= '9'){
num = 10 * num + (ch - '0');
这个是什么意思我有点看不懂。
#include <stdio.h>
int main()
{
int ch;
int num = 0;
printf("请输入待转换的字符串:");
do
{
ch = getchar();
if (ch >= '0' && ch <= '9')
{
num = 10 * num + (ch - '0');
}
else
{
if (num)
{
break; // 如果已有数字,则退出循环
}
}
}
while (ch != '\n');
printf("结果是:%d\n", num);
return 0;
} 意思就是你不是输入了一个数吗?他会与0和9大小比较,如果同时满足(&&的用法),则运行num*10+ch(if语句的判断)
懂了吗
求最佳{:10_282:} wangka 发表于 2021-8-16 21:15
意思就是你不是输入了一个数吗?他会与0和9大小比较,如果同时满足(&&的用法),则运行num*10+ch(if语句的 ...
A. 将用户输入的字符串中代表数字的字符转换为整型数值
B. 打印转换结果版权属于:bbs.fishc.com
C. 只打印第一组数字来自:bbs.fishc.com
提示:你可以使用 break 语句在适当的时候跳出循环。
在这个前提下为什么要这样做 wangka 发表于 2021-8-16 21:15
意思就是你不是输入了一个数吗?他会与0和9大小比较,如果同时满足(&&的用法),则运行num*10+ch(if语句的 ...
为什么那个0和9要加单引号 superswagy2002 发表于 2021-8-16 21:51
为什么那个0和9要加单引号
单引号代表字符 是个整型,ascii字符集
数字+ 30h('0')就等于对应字符
你输入的其实是字符 ,要-'0' 转化为整型
1.'0' == 30 '1'== 31 以此类推到 '9' 为止
带单引号的是char型变量,不带的是整形变量
2.char 和 int 在底层上是相通的,说成人话就是char就是化了妆的int
用的什么化了妆?ascii表,这个你去bing搜一下比我讲的清楚
3. 回到最初的问题,ch >= '0'是在比什么?
答:假设你给ch输入成 ’a' ,根据ascii表,'a' == 61 '0' == 30
也就是说 ch >= '0' 等效 61 >= 30
注意:看我的答案之前一定先去了解一下ascii表,我会在楼下给你贴一张ascii的图片 https://baike.baidu.com/pic/ASCII/309296/1/e850352ac65c103880a07b53bc119313b17e8941?fr=lemma&ct=single#aid=1&pic=e850352ac65c103880a07b53bc119313b17e8941
算了{:10_243:}我不会发图片 这个网站里面就有
页:
[1]