Desafio II - Trocando valores

by Fujiy 1. julho 2009 14:53

Sendo:

int i1 = valorx;
int i2 = valory;

Como trocar os valores das variaveis sem criar outra variavel temporária?

A resposta está nos comentários.

Tags:

Artigos

Comentários

1/7/2009 15:10:02 #

fujiy

            int i1 = 5;
            int i2 = 10;

            i1 = i1 ^ i2;
            i2 = i1 ^ i2;
            i1 = i1 ^ i2;

            Console.WriteLine("i1 = " + i1);
            Console.WriteLine("i2 = " + i2);

fujiy Brazil | Reply

2/7/2009 8:22:50 #

fujiy

            int i1 = 5;
            int i2 = 10;

            i1 = i1 + i2;
            i2 = i1 - i2;
            i1 = i1 - i2;

            Console.WriteLine("i1 = " + i1);
            Console.WriteLine("i2 = " + i2);

fujiy Brazil | Reply

26/8/2009 2:09:47 #

Franklin

Fala Fujiy blz? Cara tô curtindo pra caramba seu blog, vem cá, como é o funcionamento do operador ^ nessa primeira solução?

Franklin Brazil | Reply

26/8/2009 22:07:53 #

fujiy

^ é o operador XOR(Exclusive OR), no caso:

i1 = 101 ^ 1010 //1111 é o XOR dos dois valores
i2 = 1111 ^ 1010 //Pegamos o valor acima e fazer um XOR pelo valor de i2, assim temos o valor de i1 de volta(101)
i1 = 1111 ^ 101//Aquele mesmo 1111 com XOR pelo antigo valor de i1(agora no i2), resulta no antigo valor de i2

fujiy Brazil | Reply

Comentar




  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading