0

可以通过一些按位操作或其他方式进一步优化以下代码(即可以将其转换为单行表达式)吗?

if(A_BOOL_VARIABLE)
    return (A == B);
else
    return (A != B);

bool注意:此处不输入 A 和 B。

4

3 回答 3

5
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

于 2013-07-20T08:53:07.840 回答
2

不是按位,而是一个简单的布尔 XOR:

return A_BOOL_VARIABLE ^ (A!=B);

在这里我假设A==B = !(A!=B)

于 2013-07-20T08:48:40.957 回答
1

为简洁起见重命名A_BOOL_VARIABLEC,真值表为:

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 哪里^是异或。

于 2013-07-20T09:03:02.363 回答