gpt4 book ai didi

java - 这一行交换了两个变量,但它是如何进行的呢?

转载 作者:行者123 更新时间:2023-12-05 00:09:47 26 4
gpt4 key购买 nike

如果以奇怪的方式提问,我深表歉意,这是我第一次在这里提问。在交换两个变量时,我在谷歌搜索后遇到了这一行:
x = x^i^(i = x);
在上下文中,我有两个整数,i 和 x,这一行交换了它们的值。我一直试图理解这背后的逻辑,但我不太明白。我最接近的是意识到,在数学尺度上,它们是相等的。把它扔进一个在线计算器显示两边都等于 x。我能想到的最接近的事情是:

(i = x) 是假的,所以它是零?

所以 i^0 是 1

所以 x = x^1

但即便如此,我仍然无法理解这是如何交换两个数字的。

最佳答案

困惑可能来自运营商。小帽子 ^ (circumflex) 是 XOR,而不是指数。

括号内的语句 i = x 将 x 的值赋给 i。同时,该语句返回值 x 以供进一步使用。因此,在将值赋给 i 之后,公式的其余部分是 x^i^x,其中 x XOR x 消除了自身,因此 x = i 仍然存在。

但是:我不明白为什么有人会想要使用它,如果您可以使用一种更易于理解的方式来使用临时变量:

int tmp = i;
i = x;
x = tmp;

关于java - 这一行交换了两个变量,但它是如何进行的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60044720/

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