Pull to refresh
8
0
Владимир Мясников @vvovas

User

Send message

Знаете ли вы как работает этот код?

Reading time3 min
Views940
Вчера, в очередной раз столкнувшись с интересным поведением кода, я решил привести пару примеров из C# и MS SQL, которые в свое время меня удивили.

Пример 1. Меняем местами значения переменных (C#)


С этим поведением я встретился несколько лет назад, когда только начал изучать C#. Применив знакомый метод, чтобы поменять значения 2-х переменных местами, я с удивлением обнаружил, что он не работает.
//Задаем 2 переменные
int x = 1, y = 2;

//Меняем их значения при помощи xor
x ^= y;
y ^= x;
x ^= y;

//Выводим результат [x=2;y=1]
Console.WriteLine("x = {0};y = {1}", x, y);

//Снова меняем их значения, но только пишем все в одну строчку
x ^= y ^= x ^= y;

//Выводим результат [x=0;y=2]
Console.WriteLine("x = {0};y = {1}", x, y);


* This source code was highlighted with Source Code Highlighter.

В итоге, в первый раз все проходит нормально и значения переменных меняются, а во второй раз, вопреки ожиданиям, у нас обнуляется переменная x.
Читать дальше
Total votes 31: ↑16 and ↓15+1
Comments35

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity