Обмен значениями двух переменных оператором xor с использованием ссылок или указателей
У меня есть две целочисленные переменные i и j, и я хочу создать функцию, которая принимает эти две переменные в качестве аргумента и обменивается их содержимым с помощью оператора xor. Теперь, если я заставлю функцию принимать аргументы по значению, т.е.void swap (int x , int y);
(с телом функции таким же, как для функцииswap
ниже), то значения хорошо меняются внутри функции. Но поскольку я хочу поменять значения переменных в вызывающей функции, я использовал передачу аргументов по ссылке (и по указателям):
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 ;
}
но ни один случай не показал правильного результата!
Почемуswap
функция не обменивается значениями при передаче аргументов по ссылке или по указателям?