@Novice23

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

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

Как работает данное логическое выражение?
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 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 остаётся прежнем.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы