鱼C论坛

 找回密码
 立即注册
查看: 1297|回复: 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是如何判断的?

小白,求大佬解答!


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

你写个程序试一下不就知道了
#include <stdio.h>

int main(void) {
    int num;
    int status = scanf("%d", &num);
    printf("num: %d\n", num);
    printf("status: %d\n", status);
    return 0;
}
$ ./main
1
num: 1
status: 1
$ ./main
a
num: -713396680
status: 0
$ ./main
123
num: 123
status: 1
$ ./main
abc
num: -815911320
status: 0
$

#include <stdio.h>

int main(void) {
    int x, y;
    int status = scanf("%d%d", &x, &y);
    printf("x: %d\n", x);
    printf("y: %d\n", y);
    printf("status: %d\n", status);
    return 0;
}
$ ./main
12 34
x: 12
y: 34
status: 2
$ ./main
56 z
x: 56
y: 1055045080
status: 1
$ ./main
z 78
x: 1
y: -1031639160
status: 0
$
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

scanf的返回值使它按照格式符成功读入数据的个数
该代码中只有一个%d, 所以要是输入整型,它返回的是1,否则0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 16:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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