4

为什么语句 z ^= true 当前一个产生一个 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

^ 表示异或,如果一方但不是双方都为真,则异或被定义为真,而在所有其他情况下,异或被定义为假。

所以

z ^= v 表示 z = false ^ true 表示为真

z ^= true 表示z = true ^ true,即为假

注意 ^= 改变了第一个和第二个语句中变量的值

于 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,这(根据 的定义^)会更改第二个应用程序的结果。

于 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)的结果是true当且仅当其操作数之一

结论:当x == true时x ^= true将产生true

于 2010-01-05T22:48:45.817 回答