课后作业
#include <stdio.h>int main()
{
int ch;
while (scanf("%d", &ch) == 1 && ch >= 0)
;
return 0;
}
课后作业说这个只要输入的不是自然数就可以退出,但是如果我输入2的话2也不==1啊,不是也可以退出吗,为什么啊,没看懂,求解。谢谢 scanf("%d", &ch) == 1 是判断是否输入成功,不是用户输入的是否为 1 zltzlt 发表于 2020-4-20 18:39
scanf("%d", &ch) == 1 是判断是否输入成功,不是用户输入的是否为 1
啊啊明白了,请问那我要是输入字符的话,是因为scanf哪里出错程序出错还是退出循环啊 Juniorboy 发表于 2020-4-20 18:40
啊啊明白了,请问那我要是输入字符的话,是因为scanf哪里出错程序出错还是退出循环啊
怎么会出错呢?
楼上都说过了,那个只是判断输入是否成功 Juniorboy 发表于 2020-4-20 18:40
啊啊明白了,请问那我要是输入字符的话,是因为scanf哪里出错程序出错还是退出循环啊
对于scanf而言,你只有两种可能,一是“输入”(1),二是“没输入”(0) scanf("%d", &ch)这个语句是用scanf读入一个int类型赋值给ch,scanf制度如一个int数据其以返回值可能是1或者0或者-1,若读到int类型数据则返回值为1;若读到其他字符,则返回值为0;什么也没有读到,则返回值为-1
若你输入的一直是整型数(可以有空白符(空格、Tab、回车))那么scanf的返回值将一直是1,若输入一个其他内容,比如输入一个浮点数(例如:1.23)那么会读到1,条件判断为真,然后下次循环读到一个点(.),scanf返回值为0,结束循环。
页:
[1]