1

この形式のXORテストの使用を妨げるものはありますか?

bool result = false;
 bool b1 = false;
 bool b2 = false;

 ..。

 if(b1 ^ b2)
 {{
    結果=true;
 }
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、速記として行うこともできます。

ここでのもう 1 つの質問は、これを自分で試すことを妨げる何かがあったかどうかです。

于 2010-07-05T13:14:56.753 に答える
0

それが良い考えかどうかはわかりません。^はビット演算子であり、論理演算子ではありません。したがって、1 ^ 2=3です。C++では少し錆びていますが、boolはunsignedcharなどとして格納されていると思います。

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)のようなことを行う必要があります。

于 2010-07-05T13:26:22.963 に答える