4

前のステートメントが true を生成するときに、ステートメント z ^= true が false を生成するのはなぜですか?

bool v = true;
bool z = false;

z ^= v;
Console.WriteLine(z);

z ^= true;
Console.WriteLine(z);

OUTPUT
======
True
False
4

6 に答える 6

20

z最初のステートメントの値を変更するためです。

于 2010-01-05T22:45:56.960 に答える
15

なぜなら:

false ^ true == true
true ^ true == false

http://en.wikipedia.org/wiki/Xorを参照

于 2010-01-05T22:46:35.760 に答える
7

^ XOR を意味します。XOR は、両方ではなく一方が真の場合に真と定義され、それ以外の場合は偽と定義されます。

そう

z ^= v は z = false ^ true を意味し、これは true を意味します

z ^= true は、z = true ^ true を意味し、これは false です

^= は、最初と 2 番目のステートメントで変数の値を変更することに注意してください。

于 2010-01-05T22:46:26.353 に答える
2

XOR( ^)の真理値表は

a    b    a^b
0    0     0
0    1     1
1    0     1
1    1     0

操作lhs ^= rhsは基本的に の省略形ですlhs = lhs ^ rhs。したがって、最初のアプリケーションで^=の値を変更するとz、( の定義に従って^) 2 番目のアプリケーションの結果が変わります。

于 2010-01-05T22:48:20.123 に答える
1

false XOR true = true の場合、z を true に設定します。true XOR true = false の場合、z を false に設定します。

于 2010-01-05T22:46:34.323 に答える
1

フォームの式は次のようx ^= yに評価されます。x = x ^ y

x ^ y(XOR)の結果は、そのオペランドの1 つだけがtruetrueである場合に限ります。

結論: x ^= trueは、 x == trueの場合にtrueを生成します。

于 2010-01-05T22:48:45.817 に答える