2010-01-05 4 views

ответ

20

Потому что изменяет значение z в первом сообщении.

+5

+1 для решения вопроса, а не определения XOR;) –

7

^Значения XOR, XOR определяются как истинные, если одна, но не обе стороны являются истинными, и определяется как ложная в каждом другом случае.

Так

г^= v означает, г = ложь^верно, что означает истинный

г^= истина означает, г = верно^истинно, что ложно

Заметим, что^= изменяет значение переменной в первом и втором операциях

1

false XOR true = true, тогда вы устанавливаете z в true; true XOR true = false, тогда вы устанавливаете z на false.

2

таблица истинности для XOR (^) является

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

Операция lhs ^= rhs в основном только стенография для lhs = lhs^rhs. Итак, при первом применении ^= вы изменяете значение z, которое (в соответствии с определением ^) изменяет результат второй заявки.

1

Выражение формы x ^= y оцениваются как x = x^y

Результат x^y (XOR) является true тогда и только тогда, когда ровно один из операндов является истинным .

вывод: х^= истинный будет производить верно при х == истинный.