三元条件表达式的解释
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;
}
}
希望对您有所帮助。
三元条件表达式如下所示:
#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;
}
}
希望对您有所帮助。