我需要一些确认。我总是得到正确的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");
答案 0 :(得分:2)
if (array[i] == a || array[i] == b || array[i] == c){
...
}
我希望有时候你可以说if (array[i] == [a, b, c])
或其他什么。
答案 1 :(得分:2)
您正在做的是或者是“布尔评估array[i]==a
直接对b
,c
的结果。
换句话说,( (array[i] == a) || (b) || (c) )
实际上就是你正在做的事情 - 可能不是你想要的!
您需要单独评估布尔表达式:
(array[i] == a) || (array[i] == b) ...
答案 2 :(得分:1)
用以下代码替换您的代码:
if( array[i] == a || array[i] == b || array[i] == c)
布尔条件的每个部分必须是完整的表达式。虽然您编写的是有效的C代码,但它无法达到您想要的效果:您需要在每个部分进行数组元素比较。
答案 3 :(得分:0)
“有人”是对的。你需要使用:
if ((array[i] == a) || (array[i] == b) || (array[i] == c))
您的程序不始终生成正确的输出。尝试任何i
不等于11,12或13。