Что оператор ^ делает с BOOL?

Что означает это утверждение?

isChecked = isChecked ^ 1;

isChecked этоBOOL.

 Josh Caswell29 мая 2012 г., 07:56
Это довольно просто выяснить. Какие результаты вы наблюдаете?

Ответы на вопрос(7)

это побитовый оператор XOR, изменяющий 0 на 1 и 1 на ноль. увидеть всех операторовВот.

Решение Вопроса

XOR isChecked с 1, поэтому я предполагаю, что true ^ 1 = 0 (false) и false ^ 1 = 1 (true)

Это только переворачивает последний битBOOL, Не надежный способ логически отрицать. Если кто-то достаточно сумасшедший, чтобы установитьBOOL переменная на некоторое число, например 5. Затем делать^ 1 перевернет только последний бит значения до 4, который все еще оценивается какYES.

Если вы хотите логически отрицать, используйте! оператор вместо.

& Quot; ^ & Quot; называется исключительной операцией OR или XOR. В этом случае он изменит логическое значение с истинного на ложное и наоборот.

Чтобы узнать больше об этом, проверьте этоссылка на сайт

& Quot; ^ & quot; является исключительной операцией ИЛИ, поэтому 0 переходит на 1, а 1 - на ноль. Результат должен быть таким же, какisChecked = !isChecked.

Все говорят, что это XOR от bool - это правда - но цель здесь в том, что этоtoggling бул.

Преимущество такого побитового переключения - это скорость и возможность очень тщательно воспроизводить биты.

для большегоБитовые операторы

^ этоЭксклюзивный или оператор.

В вашем примере это используется для создания переключателя -isChecked будет установлен только еслиisChecked был ранее не установлен.

Ваш ответ на вопрос