如何在C中写"如果x等于5或4或78或......"

sto*_*low 3 c if-statement logical-operators

我有一个关于在if语句中使用逻辑运算符的快速问题.

目前我有一个if语句检查x是否等于5或4或78:

if ((x == 5) || (x == 4) || (x == 78)) {
blah
}
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以将所有内容浓缩为:

if (x == 5 || 4 || 78) {
blah
}
Run Code Online (Sandbox Code Playgroud)

对不起这个基本问题,我刚开始学习C.

小智 9

没有捷径,但您需要修复等于运算符.

if ((x == 5) || (x == 4) || (x == 78)) {
Run Code Online (Sandbox Code Playgroud)


tva*_*son 6

首先,你在ifs中使用的是赋值而不是相等的测试.第一种方法(与平等合适的替代)是做测试的最佳方式,但如果你有很多可能的选择,可能会有更好的办法.第二种方式可能会编译,但它不会做你想要的,它总会返回true,因为4和78都评估为true,你正在做的是评估5(分配5到x的结果)或4或78是真的.switch语句可能是一种可能的替代方法.

switch (x) {
    case 4:
    case 5:
    case 78:
       blah...
       break;
    default:
}
Run Code Online (Sandbox Code Playgroud)