1

有什么可以阻止这种形式的异或测试使用吗?

布尔结果=假;
 布尔 b1 = 假;
 布尔 b2 = 假;

 ...

 如果 ( b1 ^ b2 )
 {
    结果=真;
 }
4

3 回答 3

9

我更喜欢更清晰的:

if ( b1 != b2 )
 {
    result = true;
 }
于 2010-07-05T13:17:00.560 回答
4

不,这是完全可以接受的(如果您在:]中拼写false正确)。bool b2

#include <iostream>

int main()
{
    if (false ^ false)
    {
        std::cout << "false ^ false" << std::endl;
    }

    if (true ^ false)
    {
        std::cout << "true ^ false" << std::endl;
    }
}

输出:true ^ false

当然,在您提供的示例中,您也可以result = x1 ^ x2使用速记。

这里的另一个问题是是否有什么东西阻止你自己尝试这个。

于 2010-07-05T13:14:56.753 回答
0

我不确定这是个好主意。^ 是位运算符而不是逻辑运算符。所以 1^2 = 3。我在 C++ 中有点生疏,但我认为 bool 存储为 unsigned char 或类似的东西

bool a= 1
bool b = 2

已验证。

a == true; // yes
b == true; // yes
a ^ b == true; // yes.  not what you are expecting :-(

为确保使用正确的真/假值,您必须执行 (!!a) ^ (!!b) 之类的操作

于 2010-07-05T13:26:22.963 回答