【问题标题】:for() loop breaks when using the OR operator (C)使用 OR 运算符时 for() 循环中断 (C)
【发布时间】:2021-06-30 05:46:40
【问题描述】:

作为一个初学者,当我注意到 OR(在 C || 中)打破了 for 循环时,我一直在打字。代码如下:

#include <stdio.h>

int main() {
    
    char ch;
    
    printf("Typing program...\n");
    printf("Type away:");
    for(;;) {
        
        ch = getchar();
        if(ch == '~' || '`') {
            
            break;
            
        }
    }
    return(0);
}

编译后的代码似乎没有返回任何错误,但是当我粘贴 OR 运算符的右侧时,for 循环会中断。什么可能导致这种情况?代码来自 C for Dummies,而我正在做“练习”。我尝试的所有其他方法都会导致错误。

【问题讨论】:

  • "编译后的代码似乎没有返回任何错误," 您可以在使用 gcc 或 clang 时使用 -Wall -Wextra -Werror 编译来解决此问题。使用 microsoft 编译器时使用-W4 -WX 编译。

标签: c for-loop if-statement


【解决方案1】:

logical OR operator 两边都需要一个条件,因此 if 语句中的条件必须如下:

if (ch == '~' || ch == '`') {
    break;
}

否则'`'本身会被视为条件,这将永远为真,因为字符'`'的值不等于0

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多