Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有任何东西阻止这种形式的XOR测试的使用?_C++_Bit Manipulation_Xor - Fatal编程技术网

C++ 是否有任何东西阻止这种形式的XOR测试的使用?

C++ 是否有任何东西阻止这种形式的XOR测试的使用?,c++,bit-manipulation,xor,C++,Bit Manipulation,Xor,是否有任何东西阻止这种形式的XOR测试的使用 bool result = false; bool b1 = false; bool b2 = false; ... if ( b1 ^ b2 ) { result = true; } 布尔结果=假; bool b1=假; boolb2=假; ... 如果(b1^b2) { 结果=真; } 不,这完全可以接受(如果您在boolb2:]中正确拼写false) #包括 int main() { if(false^ false) {

是否有任何东西阻止这种形式的XOR测试的使用

bool result = false; bool b1 = false; bool b2 = false; ... if ( b1 ^ b2 ) { result = true; } 布尔结果=假; bool b1=假; boolb2=假; ... 如果(b1^b2) { 结果=真; }
不,这完全可以接受(如果您在
boolb2
:]中正确拼写
false

#包括
int main()
{
if(false^ false)
{

std::coutNo,这完全可以接受(如果您在
boolb2
:]中正确拼写
false

#包括
int main()
{
if(false^ false)
{

std::cout我更喜欢更清晰的:

if ( b1 != b2 )
 {
    result = true;
 }

我希望更清楚一些:

if ( b1 != b2 )
 {
    result = true;
 }

我不确定这是个好主意。^是位运算符,不是逻辑运算符。 所以1 ^ 2=3。我在C++中有点生锈,但是我认为布尔是作为无符号字符或者是什么东西存储的。
bool a= 1
bool b = 2
这是有效的

a == true; // yes
b == true; // yes
a ^ b == true; // yes.  not what you are expecting :-(
为了确保使用正确的真/假值,您必须执行以下操作
(!!a)^(!!b)

我不确定这是个好主意。^是按位运算符,不是逻辑运算符。 所以1 ^ 2=3。我在C++中有点生锈,但是我认为布尔是作为无符号字符或者是什么东西存储的。
bool a= 1
bool b = 2
这是有效的

a == true; // yes
b == true; // yes
a ^ b == true; // yes.  not what you are expecting :-(
为了确保使用正确的真/假值,您必须执行以下操作

(!!a)^(!!b)

取决于上下文。如果您试图执行XOR,那么这就是您应该编写的。@Peter XOR运算符用于操作位。通常没有理由对bools执行此类操作。酷。bools的完美XOR替换。或者简单地说,结果=(b1!=b2)@Alexandre:那不完全一样。如果
b1==b2
,原始的保留了先前的
result
值,但这不是。这取决于上下文。如果你试图执行异或,那么这就是你应该写的。@Peter异或运算符用于操作位。通常没有理由使用布尔值进行此类操作.Cool.bools的完美xor替换。或者干脆结果=(b1!=b2)@Alexandre:这不太一样。如果
b1==b2
,原始版本保留了先前的
result
值,但事实并非如此。我不想在这里显得粗鲁……但这是一种很容易测试的东西。@ere0n:实际上我认为这很依赖于实现,所以我不会说它很容易测试。@Viktor Sehr:如果是依赖于实现的,那么我很容易删除:)我不想在这里显得粗鲁……但这是一种很容易测试的东西。@ere0n:实际上我认为这是非常依赖于实现的,所以我不会说它很容易测试。@Viktor Sehr:如果这是依赖于实现的,那么我很容易删除:)它太生疏了。A
bool
可以是
true
false
,也可以是
true^true==false
。位表示法是(通常)到编译器为止。我确信它们仍然是旧的C++编译器,在某种地方有这种行为;它太生锈了。<代码>布尔O./COD>可以是<代码>真< <代码>或<代码> false <代码>,和<代码>真^=真=false < /> >。直到编译程序。我确信它们仍然是旧的C++编译器,在某种位置上有这种行为;