【问题标题】:Using OR operator inside while在 while 中使用 OR 运算符
【发布时间】:2019-12-14 19:29:04
【问题描述】:

我是 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;
}

每次运行时,即使我为 level 变量输入 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 输入值。

【问题讨论】:

  • 对自己反复说level != 1 || level != 2。然后,问问自己level == 1 是否为真,这两个条件中的哪一个仍然为真,从而由于|| 运算符而满足整体表达式为真?如果表达式改为level != 1 && level != 2,那会有什么不同?
  • 1 != 2 反之亦然
  • 我的想法确实不同,我知道。非常感谢您。字符串的东西呢?如何防止while无限循环?

标签: c while-loop


【解决方案1】:

De Morgan's Laws 应用于此表达式

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

和这个一样

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

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

【讨论】:

    猜你喜欢
    • 2022-08-17
    • 2015-07-08
    • 2018-12-14
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2019-07-04
    相关资源
    最近更新 更多