给定两个整形变量的值,将两个值的内容进行交换。
写法一
创建第三方变量
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
int temp = 0;
scanf("%d%d", &a, &b);
printf("a=%d b=%d\n", a, b);
temp = a;
a = b;
b = temp;
printf("a=%d b=%d\n", a, b);
system("pause");
return 0;
}
写法二
不创建第三方变量
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
printf("a=%d b=%d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("a=%d b=%d\n", a, b);
system("pause");
return 0;
}
但注意会出现一个问题,a和b都是int型,输入的数字如果足够大会出现bug。 我们假设一种情况,a和b的数值大小能够在int 的内存里放下,但是相加以后数字过大导致溢出,因此仍然有一点儿缺陷。
写法三
不创建第三方变量且解决数据过大造成的溢出
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
printf("a=%d b=%d\n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("a=%d b=%d\n", a, b);
system("pause");
return 0;
}
关于异或
异或是指按位异或
相同的位为0
不同的位位1
例如a=3 b=5
a=011 b=101
a = a^b; 011 ^101=110
b = a^b; 110 ^101=011
a = a^b; 110 ^011=101
*a ^ 0=a a ^ a=0 *
忽略别看
今天我们家这儿的政府下了通知 ,停运所有公共交通。所有小区都封闭。不让车乱跑。也不知道这样的日子什么时候过去。 我妈出去买水果都没有卖的了,说是货送不进来。哎。
昨天有个陌生人点赞了我的博客,还蛮开心的,得到别人的肯定更加激励了我坚持下去。
希望等我大学毕业的时候,offer 拿到手软,也能像某些刚毕业的大牛拿的是年薪啊。
来源:CSDN
作者:应钟二十六
链接:https://blog.csdn.net/weixin_45271990/article/details/104199836