Frage

Warum wird die Aussage z ^ = true produzieren eine falsche, wenn die vorherige eine wahre produziert?

bool v = true;
bool z = false;

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

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

OUTPUT
======
True
False
War es hilfreich?

Lösung

Denn:

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

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

Andere Tipps

Weil es den Wert von z in der ersten Anweisung ändert.

^ Means XOR, ist XOR als wahr definiert, wenn man aber nicht beide Seiten wahr sind, und wird als falsch definiert in jedem anderen Fall.

So

z ^ = V bedeutet, z = false ^ true, die wahr bedeutet

z ^ = true bedeutet z = true ^ wahr, was falsch ist

Beachten Sie, dass ^ = den Wert der Variablen in der ersten und der zweiten Anweisung ändert

Die Wahrheitstabelle für XOR (^) ist

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

Der Betrieb lhs ^= rhs ist im Grunde nur eine kurze Hand für lhs = lhs ^ rhs. Also, in Ihrer ersten Anwendung von ^= ändern Sie den Wert von z, die (gemäß der Definition von ^), das Ergebnis der zweiten Anwendung ändert.

false XOR true = wahr ist, dann setzen Sie z true; wahr XOR true = falsch ist, dann setzen Sie z auf false gesetzt.

Ein Ausdruck der Form x ^= y als x = x ^ y ausgewertet

Das Ergebnis x ^ y (XOR) ist true, wenn und nur wenn genau ein die Operanden ist true .

Fazit:. x ^ = true produzieren true , wenn x == true

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top