带有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
直接朝向b
, c
。
换句话说, ( (array[i] == a) || (b) || (c) )
实际上就是你正在做的事 – 可能不是你想要的!
您需要单独评估布尔表达式:
(array[i] == a) || (array[i] == b) ...
“有人”是对的。 你需要使用:
if ((array[i] == a) || (array[i] == b) || (array[i] == c))
您的程序并不总是产生正确的输出。 尝试使用不等于11,12或13的任何东西。