三元条件表达式如下所示:
#define _trans(x,bit1,bit2) \
((bit1==bit2)?(x&bit1):(x&bit1)?bit2:0)
任何人都可以帮我解释这个表达吗?或者如何将这个表达式分成几个部分。
答案 0 :(得分:1)
使用以下方法始终可以将三元运算符重写为if-else语句:
(EXPRESSION) ? (RESULT1) : (RESULT2)
这相当于
if (EXPRESSION) {
return RESULT1;
} else {
return RESULT2;
}
所以在你的特定情况下
EXPRESSION = (bit1 == bit2)
RESULT1 = x&bit1
RESULT2 = x&bit1 ? bit2 : 0
现在我们看到这是一个连锁的三元表达。 Jeeze这是一些严格的代码。然后是RESULT2
EXPRESSION2 = x&bit1
RESULT2,1 = bit2
RESULT2,2 = 0
所以现在我们可以编写(稍微更具可读性)的版本:
if (bit1 == bit2) {
return x&bit1;
} else {
if (x&bit1) {
return bit2;
} else {
return 0;
}
}
希望有所帮助。