【问题标题】:I'm trying to set up a loop for wrong inputs in c [duplicate]我正在尝试为 c [重复] 中的错误输入设置一个循环
【发布时间】: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,用户必须再次输入。我做错了什么?

【问题讨论】:

  • 您还需要检查scanf returns 以进行正确验证。或者更好的是,忘记 scanf 甚至存在并使用例如fgets 读取整行输入,然后使用例如strtolsscanf 解析字符串。
  • 您正在使用comma operator。通常它是这样工作的:你有两个表达式,expr1, expr2expr1 被评估,那么它的结果是扔掉.然后评估 expr2 并将其值用作结果。由于您的 printf 调用将始终返回非零值,因此它被用作条件并且始终为真。
  • 只是不要使用您还不知道它们如何工作的语言功能,就这么简单。

标签: c loops


【解决方案1】:

问题是逗号后的这个printf("wrong input")被评估并用作结果,并且由于printf的返回是输出的长度(在本例中为11),您的代码可以翻译为do {...} while (11 != 0);

【讨论】:

    猜你喜欢
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多