为什么"x ^ = true"在这个例子中产生错误?

4 c# logic operators xor

为什么语句z ^ = true会在前一个产生真值时产生错误?

bool v = true;
bool z = false;

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

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

OUTPUT
======
True
False
Run Code Online (Sandbox Code Playgroud)

Noo*_*ilk 20

因为它改变z了第一个语句中的值.

  • 用于解决问题的+1,而不是XOR的定义;) (5认同)

Mic*_*ael 15

因为:

false ^ true == true
true ^ true == false
Run Code Online (Sandbox Code Playgroud)

http://en.wikipedia.org/wiki/Xor


alb*_*ein 7

^意味着XOR,如果一个但不是两个边都是真的,则XOR被定义为真,并且在每个其他情况下被定义为假.

所以

z ^ = v表示z = false ^ true,表示true

z ^ = true表示z = true ^ true,为false

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