jun23332 发表于 2021-6-7 20:06:02

C语言课后作业里有个代码没看懂

#include <stdio.h>
#include <math.h>

int main()
{
      int ch;
      long long num = 0;
      long long temp; // 临时变量,用于测试是否超出范围
      int is_overflow = 0;

      const int max_int = pow(2, sizeof(int) * 8) / 2 - 1;
      const int min_int = pow(2, sizeof(int) * 8) / 2 * (-1);

      printf("请输入待转换的字符串:");

      do
      {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        temp = 10 * num + (ch - '0');
                        if (temp > max_int || temp < min_int)
                        {
                              is_overflow = 1;
                              break;
                        }
                        else
                        {
                              num = temp;
                        }
                }
                else
                {
                        if (num)
                        {
                              break; // 如果已有数字,则退出循环
                        }
                }

      }
      while (ch != '\n');

      if (is_overflow)
      {
                printf("数值超出范围,结果未定义!\n");
      }
      else
      {
                if (!num)
                {
                        printf("并未找到任何数值!\n");
                }
                else
                {
                        printf("结果是:%d\n", num);
                }
      }

      return 0;
}
/////////
为什么要有这个,没有这个程序依然可以执行。
if (num)
                        {
                              break; // 如果已有数字,则退出循环
                        }

王之叹息 发表于 2021-6-7 20:10:21

哪个作业说下在哪

万千只cnm 发表于 2021-6-7 21:40:54

遇到非数字如果不是首字母就结束
页: [1]
查看完整版本: C语言课后作业里有个代码没看懂