Motivado pelo Log4Dev, quero contar sobre um truque legal: o xor swap (também conhecido por triple-xor trick).
O xor swap é um truque para trocar o conteúdo de 2 variáveis sem usar uma terceira. Em C, o jeito normal de trocar dois ints (x e y) é:
temp = x;
x = y;
y = temp;
Com o xor swap, o código fica:
x = x ^ y;
y = x ^ y;
x = x ^ y;
E aí pronto, suas variáveis estão invertidas. Pode acreditar (ou ler uma explicação bem mais detalhada). Legal né?
E qual a aplicação disso? Bem, um dia os microcontroladores tiveram quantidades bem escassas de memória, e jogar um int fora para variável temporária assim estava fora de cogitação. Hoje muitos microcontroladores tem uma RAM razoável e a perda de legibilidade e manutenibilidade acarretadas não vale mais a pena para estes controladores. Para os que vivem no cruel mundo dos 128 bytes de RAM, ainda vale a pena.