|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
C语言课后作业S1E13的动动手2,这个代码的效果是输入123ABC123,输出123,后面的123不会输出出来,是什么原理,有大佬可以帮我解释一下吗
- #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;
- }
复制代码
|
|