@Novice23

Как работают Логические выражение?

int x = 1984;
int y = 2001;
x ^= y ^= x = y;
Console.WriteLine("x = " + x + "; y = " + y);

Как работает данное логическое выражение?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 4
EreminD
@EreminD
Кое-что умею
Вот так вота

Выполните
int x = 1984;
int y = 2001;
string binaryX = Convert.ToString(x, 2);
string binaryY = Convert.ToString(y, 2);
Console.WriteLine("binaryX = " + binaryX + "; binaryY = " + binaryY);
x ^= y ^= x  = y;
Console.WriteLine("x = " + x + "; y = " + y);


binaryX и binaryY - это представления чисел в двоичном коде
Оператор ^ берет два числа делает побитовое исключающее или
Оператор ^= выполняет исключающее или для левого и правого аргумента и записывает результат сразу в левый (как операторы *=, += и т.д.)

Что касается хвоста x = y, то нужно помнить, что оператор = тоже возвращает значение. Для проверки:
int a;
Console.WriteLine(a = 3);


Ну и не забывайте про приоритет выполнения операций
Ответ написан
@Novice23 Автор вопроса
Не совсем понятно.
x ^= y ^= x = y; как это вычисляется??
Ответ написан
@cicatrix
было бы большой ошибкой думать
У вас там не опечатка?
Сильно похоже на обмен значениями через XOR, что по коварной задумке автора вопроса (из учебника?), должно было запутанно представлять собой следующее:
x ^= y
y ^= x
x ^= y
После этих трёх операций x и y обменяются значениями
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Задачка с подвохом. Если разложить, то получиться:
int x1 = y;
y = y ^ y;
x = x ^ y;

Как результат Y всегда 0, а X остаётся прежнем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Кнопка Екатеринбург
До 100 000 руб.
ЛАНИТ Москва
от 80 000 до 100 000 руб.
Payment Systems Москва
от 160 000 до 200 000 руб.