是否有任何阻止这种形式的XOR测试的使用?
bool result = false; bool b1 = false; bool b2 = false; ... if ( b1 ^ b2 ) { result = true; }
答案 0 :(得分:9)
我希望更清楚:
if ( b1 != b2 )
{
result = true;
}
答案 1 :(得分: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
作为速记。
这里的另一个问题是,是否有什么东西阻止你自己尝试。
答案 2 :(得分: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 :-(
要确保使用正确的true / false值,您必须执行类似的操作 (!! a)^(!! b)