簡體   English   中英

此布爾if-else語句可以轉換為單行表達式嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM