可以通过一些按位操作或其他方式进一步优化以下代码(即可以将其转换为单行表达式)吗?
if(A_BOOL_VARIABLE)
return (A == B);
else
return (A != B);
bool
注意:此处不输入 A 和 B。
可以通过一些按位操作或其他方式进一步优化以下代码(即可以将其转换为单行表达式)吗?
if(A_BOOL_VARIABLE)
return (A == B);
else
return (A != B);
bool
注意:此处不输入 A 和 B。
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
哪里^
是异或。