这里主要介绍两种方法,第一种方法比较容易理解,第二种昂就会抽象一点,我主要讲我自己的理解,希望能给大家一种启发。

第一种方法(加减法会溢出

1.首先是将a+b的值赋值给a,这样a的值就变成了a+b,而b没有改变。

2.这样a-b就变成了原来的a+b-b=a,用b来接受,就成了b=a(这里的a是a的开始)a没有改变,还是a+b。

3.第三步就是a=a-b,由于b变成了a,a=a+b,所以a=b。

当a+b的值大于a的存储空间会造成溢出。

交换两个数的值,不使用变量的方法,逻辑运算符_交换两数值

代码实现:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int a = 3;
int b = 5;
a = a + b;
b = a - b;
a = a - b;
printf("a=%d\nb=%d\n",a,b);
}

第二种方法(逻辑运算符不会溢出

逻辑运算符是用于二进制的,因为二进制有个好处数字不是0就是1。0可以代表假,1代表真。这里主要是用到了异或的方法。相同得0,不同得1,可以抽象成加减法1+1=0(这里只算二进制的一位)1+0=1,减法也是一样。

交换两个数的值,不使用变量的方法,逻辑运算符_赋值_02

主要思路其实和上面是一样的,这相当于另类的加减法,没有那么好理解。但是这种方法比上面的方法好。

define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int a = 3;
int b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d\nb=%d\n",a,b);
}