带有if语句的布尔表达式中的问题

我需要一些确认。 我总是得到正确的o / p但是有人告诉我,下面的表达方式是行不通的

提前致谢。

#define a 11 #define b 12 #define c 13 // I want if array[i] has values of any of these then do something if( array[i] == (a) ||(b) ||( c)) // some function else printf("no match"); 

用以下代码替换您的代码:

if( array[i] == a || array[i] == b || array[i] == c)

布尔条件的每个部分必须是完整的表达式。 虽然您编写的是有效的C代码,但它无法达到您想要的效果:您需要在每个部分进行数组元素比较。

  if (array[i] == a || array[i] == b || array[i] == c){ ... } 

我希望有时候你可以说if (array[i] == [a, b, c])或其他东西。

你正在做的是或者是布尔评估array[i]==a的结果array[i]==a 直接朝向bc

换句话说, ( (array[i] == a) || (b) || (c) )实际上就是你正在做的事 – 可能不是你想要的!

您需要单独评估布尔表达式:

(array[i] == a) || (array[i] == b) ...

“有人”是对的。 你需要使用:

 if ((array[i] == a) || (array[i] == b) || (array[i] == c)) 

您的程序并不总是产生正确的输出。 尝试使用不等于11,12或13的任何东西。