做梦好啊 发表于 2019-7-23 02:03:43

课后习题 S1E13的动动手第二题

#include <stdio.h>
#include <math.h>
int main()
{
    int ch;
    int num;
    long long temp;
    int decide = 0;
    const int max_int = pow(2, sizeof(int) * 8) / 2 - 1;
    const int min_int = pow(2, sizeof(int) * 8) / 2 * (-1);
    printf("请输入待转换的字符串: ");
    while ((ch = getchar()) != '\n')
    {
      if (ch >= '0' && ch <= '9')
      {
            temp = 10 * num + (ch - '0');
            if (temp > max_int || temp < min_int)
            {
                decide = 1;
                break;
            }
            else
            {
                num = temp;
            }
      }
    }
    if (decide)
    {
      printf("overflow\n");
    }
    else

    {
      if (num == 0)
      {
            printf("未找到数值\n");
      }

      else
      {
            printf("结果是 %d\n", num);
      }
    }
    getchar();
    return 0;
}
不知道为什么,判断数值是否超出int的范围时总是失败

做梦好啊 发表于 2019-7-23 13:47:40

{:10_250:}

一木之禾 发表于 2019-7-23 17:18:47

做梦好啊 发表于 2019-7-23 13:47


建议你提供你下你测试的用例

1809228982 发表于 2019-7-23 17:41:25

本帖最后由 1809228982 于 2019-7-23 17:44 编辑

试试单个数字输出??

做梦好啊 发表于 2019-7-25 22:54:11

一木之禾 发表于 2019-7-23 17:18
建议你提供你下你测试的用例

谢谢qwq

做梦好啊 发表于 2019-7-25 22:55:01

1809228982 发表于 2019-7-23 17:41
试试单个数字输出??

只有超出int范围的不行emm

做梦好啊 发表于 2019-7-25 22:56:52

就是这样

做梦好啊 发表于 2019-7-26 13:45:22

已解决 是num要定义为long long num
页: [1]
查看完整版本: 课后习题 S1E13的动动手第二题