一尘不染

C#使用按位异或进行交换

algorithm

void swap(ref int x, ref int y)
{       x = x ^ y;   y = y ^ x;   x = x ^ y;  }

我正在学习按位异或。交换是如何发生的?这让我很震惊。这种方法应该交换X和Y的内容,但是我根本不了解发生了什么?


阅读 232

收藏
2020-07-28

共1个答案

一尘不染

谨防。此方法具有非常非常讨厌的属性。它被用于“不受欢迎的C竞赛”参赛作品之一。它会愉快地工作……直到有一天,有人尝试像交换两个数组元素a [i]和a
[j]这样的事情而不确保i!= j。

当两个引用都引用同一个变量时,此方法将其清零。

2020-07-28