Zmienianie wartości dwóch zmiennych przez operatora xor przy użyciu odwołań lub wskaźników
Mam dwie zmienne całkowite i oraz j, a ja chcę utworzyć funkcję, która przyjmuje te dwie zmienne jako argument i zamienia ich zawartość za pomocą operatora xor. Teraz, jeśli sprawię, że funkcja przyjmuje argumenty według wartości, tjvoid swap (int x , int y);
(z ciałem funkcji takim samym jak dla funkcjiswap
poniżej) wartości są ładnie zamieniane w funkcji. Ale ponieważ to, czego chcę, to zamiana wartości zmiennych w funkcji wywołującej, użyłem przekazywania argumentów przez odwołanie (a także przez wskaźniki):
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 ;
}
ale żaden przypadek nie pokazał poprawnego wyniku!
Dlaczego jestswap
funkcja nie zamienia wartości na przekazywanie argumentów przez odniesienie lub wskaźniki?