[英]Can this boolean if-else statement be turned into a one-line expression?
是否可以通过按位运算或其他方式进一步优化以下代码(即可以将其转换为单行表达式)?
if(A_BOOL_VARIABLE)
return (A == B);
else
return (A != B);
注意:此处A和B不是bool
型。
return A_BOOL_VARIABLE == (A == B);
真相表:
A_BOOL_VARIABLE (A == B) Result
T T T
T F F
F T F
F F T
与您原来的if..else
相同。
不是按位的,而是一个简单的布尔XOR:
return A_BOOL_VARIABLE ^ (A!=B);
在这里,我假设A==B = !(A!=B)
。
为了简洁起见,将您的A_BOOL_VARIABLE
重命名为C
,真值表为:
C A B Result
0 0 0 0 \
0 0 1 1 | == A ^ B (C=0)
0 1 0 1 |
0 1 1 0 /
1 0 0 1 \
1 0 1 0 | == ! (A ^ B) (C=1)
1 1 0 0 |
1 1 1 1 /
因此,最终表达式可能是: A ^ B ^ C
其中^
是互斥或。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.