三元条件表达式的解释

Explanation of a ternary conditional expression

三元条件表达式如下所示:

#define _trans(x,bit1,bit2) \ 
((bit1==bit2)?(x&bit1):(x&bit1)?bit2:0)

谁能帮我解释一下这个表情?或者如何将这个表达式拆分成几个部分。

三元运算符总是可以用以下方法改写为 if-else 语句:

(EXPRESSION) ? (RESULT1) : (RESULT2)

这相当于

if (EXPRESSION) { 
  return RESULT1; 
} else {
  return RESULT2;
}

所以在你的具体情况下

EXPRESSION = (bit1 == bit2)
RESULT1 = x&bit1
RESULT2 = x&bit1 ? bit2 : 0

现在我们看到这一直是一个链式三元表达式。哎呀,这是一些粗俗的代码。结果 2 然后是

EXPRESSION2 = x&bit1
RESULT2,1 = bit2
RESULT2,2 = 0

所以现在我们可以编写(更具可读性的)版本:

if (bit1 == bit2) {
  return x&bit1;
} else {
  if (x&bit1) {
    return bit2;
  } else {
    return 0;
  }
}

希望对您有所帮助。