C++

Меняем значение переменных местами

Забавный факт. Сегодня узнал, что для того чтобы поменять значения двух переменных местами не обязательно пользоваться конструкцией:

tmp = var1;
var1 = var2;
var2 = tmp;

Можно просто выполнить три операции поразрядного исключающего ИЛИ:

var1 ^= var2;
var2 ^= var1;
var1 ^= var2;

P.S. Вспомнив азы булевой алгебры, проверил на листочке бумаги, таки работает =)