【发布时间】:2022-12-07 20:06:21
【问题描述】:
我写的代码:
#include <stdio.h>
int main(){
int N;
do{
printf("\n Type in an integer:");
scanf("%d", &N);
}while(N < 0 || N > 65535, printf("wrong input"));
}
但是代码不会终止。我正在尝试如果输入小于 0 或大于 65535,用户必须再次输入。我做错了什么?
【问题讨论】:
-
您还需要检查
scanfreturns 以进行正确验证。或者更好的是,忘记scanf甚至存在并使用例如fgets读取整行输入,然后使用例如strtol或sscanf解析字符串。 -
您正在使用comma operator。通常它是这样工作的:你有两个表达式,
expr1, expr2。expr1被评估,那么它的结果是扔掉.然后评估expr2并将其值用作结果。由于您的printf调用将始终返回非零值,因此它被用作条件并且始终为真。 -
只是不要使用您还不知道它们如何工作的语言功能,就这么简单。