c - 在 while 内部使用 OR 运算符

标签 c while-loop

我是 stackoverflow 和 C 编程的新手,我有一个非常基本的问题。

这是我的代码;

int main() {
    int level;


    printf("Select game level \n1 is easy, 2 is hard: ");
    scanf("%d", &level);

    while(level != 1 || level != 2) {
        printf("Please enter a accurate game level: ");
        scanf("%d", &level);
    }

    return 0;
}

每次运行时,即使我为级别变量输入 1 或 2。但是当我删除 OR 运算符时,它正在使用 1 值。但我需要控制这两个值。我尝试了这个,但它也不起作用:

int main() {
    int level;


    printf("Select game level \n1 is easy, 2 is hard: ");
    scanf("%d", &level);

    if(level != 1 || level != 2) level = 0;

    while(level != 0) {
        printf("Please enter a accurate game level: ");
        scanf("%d", &level);
    }

    return 0;
}

而且,如果我向 scanf 输入一个字符串,while 就会开始运行,而不等待我向 scanf 输入值。

最佳答案

正在申请De Morgan's Laws对于这个表达式

(level != 1 || level != 2)

与此相同

!((level == 1) && (level == 2))

内心的表达可以是真实的吗? level 可以等于 1 等于 2 同时?不,它不能,永远不会。

关于c - 在 while 内部使用 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59334649/

相关文章:

python - ctypes内存管理: how and when free the allocated resources?

php - 如何对两个循环使用一个查询

java - 限制 do-while 运行 7 次,除非给出正确的输入

java外部while循环不迭代

c - 如何制作 "if( variable1 < X more or less Y)"?

c - 如何从 C 调用带有单元号参数的 Fortran 例程

c - 使用 `union` 在整数和数组之间输入双关语?

c - 让 gcc 成为 make 的默认编译器

c++ - 需要帮助了解我的 while 循环中发生了什么

C# do while循环开始停止