拾荒独酌 发表于 2022-9-28 22:43:32

S1E13动动手第二题

#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;
}
提问:为什么int ch可以通过getchar()接受字符?{:5_104:}

临时号 发表于 2022-9-28 22:52:12

字符实际上是用数字来储存的,如65就是A,规定什么数字代表什么字符的表叫ASCII码表
所以这里可以用int类型来接收字符

拾荒独酌 发表于 2022-9-28 23:01:49

临时号 发表于 2022-9-28 22:52
字符实际上是用数字来储存的,如65就是A,规定什么数字代表什么字符的表叫ASCII码表
所以这里可以用int类型 ...

跟函数那些没有关系吗?

jackz007 发表于 2022-9-28 23:08:26

      首先,char 和 int 都是整型数,只不过二者占用的内存空间有所不同,char 是 8 位,占用 1 个字节,int 是 32 位占用 4 个字节,char 的数值范围是 -128 ~ 127,int 是 - 2147483648 ~ 2147483647,所以,int 的数值范围完全覆盖 char,也就是说,int 对数值的表达能力强于 char,所以,单就用 int ch 接受 getchar() 而言,那是绰绰有余,没有任何问题。

临时号 发表于 2022-9-28 23:08:42

拾荒独酌 发表于 2022-9-28 23:01
跟函数那些没有关系吗?

没有

拾荒独酌 发表于 2022-9-29 08:24:29

临时号 发表于 2022-9-28 23:08
没有

谢谢你的答复

拾荒独酌 发表于 2022-9-29 08:43:07

jackz007 发表于 2022-9-28 23:08
首先,char 和 int 都是整型数,只不过二者占用的内存空间有所不同,char 是 8 位,占用 1 个字节 ...

谢谢你的回复
页: [1]
查看完整版本: S1E13动动手第二题