C语言如何用异或完成两个数的交换

本博文源于C语言基础,在平常用交换数据的时候。我们更多的时候会使用中间变量作为交换介质。用异或进行交换就不用中间变量作为交换介质。但是仅仅适用于整数

1.题目再现&测试效果

用异或完成两个整数的数据交换
在这里插入图片描述

2. 思路解析

我们使用

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

首先是a=a^b;
同理,设sum = a^b
当b=b^a,相当于

b = b^sum = b ^a ^b = a

最后一步

a = a^b=sum^b=a^b^a=b

3.完整源码

#include<stdio.h>
int main()
{
    
    
    int a =2;
    int b =3;
    printf("\n%d,%d",a,b);
    a = a^b;
    b = b^a;
    a = a^b;
    printf("\n%d,%d",a,b);
    return 0;
}

Guess you like

Origin blog.csdn.net/m0_37149062/article/details/121224640