gpt4 book ai didi

c++ - 使用引用或指针通过 xor 运算符交换两个变量的值

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:53 25 4
gpt4 key购买 nike

我有两个整数变量 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 函数在通过引用或指针传递参数时不交换值?

最佳答案

I have two integer variables i and j and I want to make a function which takes these two variables as its argument and interchanges their contents using xor operator.

为什么?

如您所知,您需要将指针传递给对象,或者使用引用。

这个:

x^=y^=x^=y;

具有未定义的行为,因为它在序列点之间修改同一个对象两次(它对 xy 都这样做)。

如果两个对象是同一个对象,异或技巧就会失败;第一个异或将对象归零。

如果你想交换两个对象,只需使用一个临时对象:

int temp = x;
x = y;
y = temp;

它很简单,而且有效

关于c++ - 使用引用或指针通过 xor 运算符交换两个变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41798422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com