HZY222 发表于 2022-4-4 12:00:48

求解

本帖最后由 HZY222 于 2022-4-4 15:37 编辑


      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');
这个是啥意思,求解答

ba21 发表于 2022-4-5 15:00:25

代2个数字进去什么都懂了。
ch = 1
10*0 + ('1'-'0')=1, num =1

ch = 2
10*1 + ('2'-'0')=10+2 = 12, num = 12
整个代码的意思是 把字符串数字,转换成整形

(ch-'0') 把字符转成整型
10 * num 实现往左移1位
页: [1]
查看完整版本: 求解