有什么可以阻止这种形式的异或测试使用吗?
布尔结果=假; 布尔 b1 = 假; 布尔 b2 = 假; ... 如果 ( b1 ^ b2 ) { 结果=真; }
有什么可以阻止这种形式的异或测试使用吗?
布尔结果=假; 布尔 b1 = 假; 布尔 b2 = 假; ... 如果 ( b1 ^ b2 ) { 结果=真; }
我更喜欢更清晰的:
if ( b1 != b2 )
{
result = true;
}
不,这是完全可以接受的(如果您在:]中拼写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
使用速记。
这里的另一个问题是是否有什么东西阻止你自己尝试这个。
我不确定这是个好主意。^ 是位运算符而不是逻辑运算符。所以 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) 之类的操作