C语言 中 判断是否为数字问题
本帖最后由 程员新秀 于 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是如何判断的?
小白,求大佬解答!
当num输入为数字时候,status取值是怎样的,当num输入为字符时候,status取值又是怎样的?status == 1也麻烦解释一下吧 程员新秀 发表于 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
$ 程员新秀 发表于 2022-1-19 01:05
当num输入为数字时候,status取值是怎样的,当num输入为字符时候,status取值又是怎样的?status == 1也麻 ...
scanf的返回值使它按照格式符成功读入数据的个数
该代码中只有一个%d, 所以要是输入整型,它返回的是1,否则0
页:
[1]