为什么语句 z ^= true 当前一个产生一个 true 时产生一个 false ?
bool v = true;
bool z = false;
z ^= v;
Console.WriteLine(z);
z ^= true;
Console.WriteLine(z);
OUTPUT
======
True
False
因为它改变了z
第一条语句中的值。
^ 表示异或,如果一方但不是双方都为真,则异或被定义为真,而在所有其他情况下,异或被定义为假。
所以
z ^= v 表示 z = false ^ true 表示为真
z ^= true 表示z = true ^ true,即为假
注意 ^= 改变了第一个和第二个语句中变量的值
XOR
( )的真值表^
是
a b a^b
0 0 0
0 1 1
1 0 1
1 1 0
该操作lhs ^= rhs
基本上只是lhs = lhs ^ rhs
. 因此,在您的第一个应用程序中^=
更改 的值z
,这(根据 的定义^
)会更改第二个应用程序的结果。
false XOR true = true,然后将 z 设置为 true;true XOR true = false,然后将 z 设置为 false。
形式的表达式x ^= y
被评估为x = x ^ y
x ^ y
(XOR)的结果是true
当且仅当其操作数之一为真。
结论:当x == true时x ^= true将产生true。