鱼C论坛

 找回密码
 立即注册
查看: 1540|回复: 3

C语言 中 判断是否为数字问题

[复制链接]
发表于 2022-1-19 00:59:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 程员新秀 于 2022-1-19 01:01 编辑

原代码
#include <stdio.h>

int main()
{
        int num = 0;
        long sum = 0L; // 0L表示类型为long的0
        int status;

        do
        {
                printf("请输入合法的数字:");
                sum = sum + num;
                status = scanf("%d", &num);
        } while(status == 1);

        printf("结果是:%ld\n", sum);

        return 0;
}


中  status = scanf("%d", &num);
        } while(status == 1);
为什么status可以判断出num是否为数字?  status = scanf是如何判断的?

小白,求大佬解答!


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-19 01:05:08 | 显示全部楼层
当num输入为数字时候,status取值是怎样的,当num输入为字符时候,status取值又是怎样的?status == 1也麻烦解释一下吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-19 02:32:22 | 显示全部楼层
程员新秀 发表于 2022-1-19 01:05
当num输入为数字时候,status取值是怎样的,当num输入为字符时候,status取值又是怎样的?status == 1也麻 ...

你写个程序试一下不就知道了

  1. #include <stdio.h>

  2. int main(void) {
  3.     int num;
  4.     int status = scanf("%d", &num);
  5.     printf("num: %d\n", num);
  6.     printf("status: %d\n", status);
  7.     return 0;
  8. }
复制代码

  1. $ ./main
  2. 1
  3. num: 1
  4. status: 1
  5. $ ./main
  6. a
  7. num: -713396680
  8. status: 0
  9. $ ./main
  10. 123
  11. num: 123
  12. status: 1
  13. $ ./main
  14. abc
  15. num: -815911320
  16. status: 0
  17. $
复制代码


  1. #include <stdio.h>

  2. int main(void) {
  3.     int x, y;
  4.     int status = scanf("%d%d", &x, &y);
  5.     printf("x: %d\n", x);
  6.     printf("y: %d\n", y);
  7.     printf("status: %d\n", status);
  8.     return 0;
  9. }
复制代码

  1. $ ./main
  2. 12 34
  3. x: 12
  4. y: 34
  5. status: 2
  6. $ ./main
  7. 56 z
  8. x: 56
  9. y: 1055045080
  10. status: 1
  11. $ ./main
  12. z 78
  13. x: 1
  14. y: -1031639160
  15. status: 0
  16. $
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-19 08:31:41 | 显示全部楼层
程员新秀 发表于 2022-1-19 01:05
当num输入为数字时候,status取值是怎样的,当num输入为字符时候,status取值又是怎样的?status == 1也麻 ...

scanf的返回值使它按照格式符成功读入数据的个数
该代码中只有一个%d, 所以要是输入整型,它返回的是1,否则0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 02:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表