scanf函数上的无穷大

scanf函数上的无穷大,c,C,这个代码有什么问题?即使键入了“1”或“2”,while循环也会继续运行 #include "stdio.h" void helper(void); int main() { int s; scanf("%d", &s); while(s!=1 || s!=2) { helper(); scanf("%d", &s); } return 0; } void helper(void) { pr

这个代码有什么问题?即使键入了“1”或“2”,while循环也会继续运行

#include "stdio.h"

void helper(void);
int main() {
    int s;

    scanf("%d", &s);

    while(s!=1 || s!=2) {
        helper();
        scanf("%d", &s);
    }

    return 0;
}

void helper(void) {
    printf("Please use 1 or 2 as option");
}
我想你是说

while(s!=1 && s!=2)
我想你是说

while(s!=1 && s!=2)

任何数字要么不等于一,要么不等于二:你可以肯定:)

您可能想写的是
&&

while(s!=1 && s!=2) {
}

任何数字要么不等于一,要么不等于二:你可以肯定:)

您可能想写的是
&&

while(s!=1 && s!=2) {
}

您的
|
应该是
while
循环中的
&

您的
|
应该是
while
循环中的
&

您需要将|改为&.

您需要将|改为&.

while。任何变量都不能有两个值。因此,使用&&而不是| |

在检查时检查您的状况。任何变量都不能有两个值。因此,请使用&&而不是||

while(s!=1 || s!=2)
翻译为:

while(s is not 1 OR s is not 2)
所以如果
s
1
,那么它不是
2
。。。也就是说你一直在循环

翻译为:

while(s is not 1 OR s is not 2)

所以如果
s
1
,那么它不是
2
。。。这意味着您将继续循环。

您需要更改以下内容:

while(s!=1 || s!=2) {         helper();         scanf("%d", &s);     } 
为此:

while(s!=1 && s!=2) {         helper();         scanf("%d", &s);     } 
工作


继续编码

您需要更改以下内容:

while(s!=1 || s!=2) {         helper();         scanf("%d", &s);     } 
为此:

while(s!=1 && s!=2) {         helper();         scanf("%d", &s);     } 
工作


继续编码

尝试将
|
更改为
&

尝试将
|
更改为
&

while(s!=1 && s!=2) {
}