这个布尔if-else语句可以转换为单行表达式吗
本文关键字:转换 单行 表达式 布尔 if-else 语句 | 更新日期: 2023-09-27 18:23:57
下面的代码是否可以通过一些逐位操作或其他操作进行进一步优化(即,是否可以将其转换为单行表达式)?
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
相同。
不是按位的,而是一个简单的布尔异或:
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
,其中^
是互斥的或。