C语言--不创建第三个变量,实现对两个数字的交换
我们先来看一下,创建临时变量交换两个数字。
#include<stdio.h>
{
int a=2;
int b=3;
int tmp=0;
printf("before:a=%d b=%d\n",a,b);
tmp=a;
a=b;
b=tmp;
printf("after:a=%d b=%d\n",a,b);
return 0;
}
图解:
运行结果:
再看一下不创建的方法
方法一:加加减减
//加减法 缺点可能会溢出
int main()
{
int a=3;
int b=5;
printf("before:a=%d b=%d\n",a,b);
a=a+b;
b=a-b;
a=a-b;
printf("after:a=%d b=%d ",a,b);
}
图解
运行结果:
法二:按位异或
按位异或 相同的位不一样就为1,否则是0,注意不是指数(二进制)
//代码的可读性较差,但是面试题可能会考
int main()
{
int a=3;
int b=6;
printf("brfore :a=%d b=%d\n",a,b);
a=a^b;
b=a^b;
a=a^b;
printf("after :a=%d b=%d",a,b);
}
图解;假设是1个字节
运行结果:
创作不易,如果对你有帮助的话,给个免费的赞鼓励一下小编吧!🍗