gpt4 book ai didi

c - 这种方式是否更适合在 c 中交换两个没有临时变量的变量?

转载 作者:行者123 更新时间:2023-12-01 13:59:33 26 4
gpt4 key购买 nike

#include<stdio.h>

int main()
{

int a=20,b=30;

a=a+b;
b=a-b;
a=a-b;



return 0;
}

我可以使用这个程序来交换正值和负值吗?

最佳答案

在没有临时持有者的情况下交换变量的算法使用按位异或运算,而不是减法。因此,使用名为 ab 的变量,我们将有:

a=a^b;
b=a^b;
a=a^b;

编辑:您的代码确实适用于我使用ab的一些整数值对其进行测试的少数情况,但 XOR 是传统的做法。正如评论者@wildplasser 指出的那样,XOR 成为惯例的原因是整数加法和减法可能会溢出,从而给出不正确的结果,而 XOR 则不会。

关于c - 这种方式是否更适合在 c 中交换两个没有临时变量的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44344453/

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