课后习题 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的范围时总是失败 {:10_250:} 做梦好啊 发表于 2019-7-23 13:47
建议你提供你下你测试的用例 本帖最后由 1809228982 于 2019-7-23 17:44 编辑
试试单个数字输出?? 一木之禾 发表于 2019-7-23 17:18
建议你提供你下你测试的用例
谢谢qwq 1809228982 发表于 2019-7-23 17:41
试试单个数字输出??
只有超出int范围的不行emm 就是这样 已解决 是num要定义为long long num
页:
[1]