求大神解答
#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;
}
这是字符串转数字的代码num = 10 * num + (ch - '0'); 请问这个10*num什么意思啊,后面的我理解。我如果删掉10*num,输入99的话输出的是9。 本帖最后由 桃花飞舞 于 2022-9-21 01:03 编辑
你在num = num * 10 + (ch - '\0');这一句前面 printf("%d \n", num * 10); 如果输入9999 打印是0 990 990 9990 桃花飞舞 发表于 2022-9-21 00:59
你在num = num * 10 + (ch - '\0');这一句前面 printf("%d \n", num * 10); 如果输入9999 打印是0 9 ...
请输入待转换字符串:99
999结果是:99
我就是不理解num*10 和字符串转化整数有什么关系 本帖最后由 桃花飞舞 于 2022-9-21 01:19 编辑
我爱派森love 发表于 2022-9-21 01:06
请输入待转换字符串:99
999结果是:99
我就是不理解num*10 和字符串转化整数有什么关系
num = num * 10 + (ch - '\0');
输入99
初始值 num=0
第一次循环 num =num * 10 + ('9' - '\0'); num=9
0 * 10 + 9
第二次循环 num =num*10 + ('9' - '\0'); num=99
9 * 10 + 9
第三次 走else ch == '\n' 跳出循环 桃花飞舞 发表于 2022-9-21 01:14
num = num * 10 + (ch - '\0');
输入99
初始值 ...
谢谢懂了
页:
[1]