Intercambiando valores de duas variáveis pelo operador xor usando referências ou ponteiros
Eu tenho duas variáveis inteiras i e j e eu quero fazer uma função que leva essas duas variáveis como seu argumento e troca seu conteúdo usando o operador xor. Agora, se eu fizer a função para receber argumentos por valor, ou seja,void swap (int x , int y);
(com corpo de função igual ao da funçãoswap
abaixo), em seguida, os valores estão sendo trocados bem dentro da função. Mas como o que eu quero é a troca dos valores das variáveis na função call eu usei passando argumentos por referência (e por ponteiros também):
void swap ( int& x , int& y )
{
x^=y^=x^=y;
cout << x<< " " << y << endl ;
}
int main ()
{
int i (1), j (2) ;
swap ( i, j ) ;
cout << i << " " << j << endl ;
}
mas nenhum dos casos mostrou o resultado correto!
Porque é oswap
função não trocando os valores na passagem de argumentos por referência ou ponteiros?