[英]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.