第一种方式就是最常用的定义第三个变量的方式:(开发者最常用的方式,简单易懂!)
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(void) { int a = 10; int b = 20; int temp = a; a = b; b = a; printf("a=%d,b=%d\n",a,b); system("pause"); return 0; }
第二种是两个变量互相加减操作的方式:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(void) { int a = 10; int b = 20; a = a + b; b = a - b; a = a - b; printf("a=%d,b=%d\n",a,b); system("pause"); return 0; }
第三种与第二种是一样的,不过是采用了乘除的方式而已:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(void) { int a = 10; int b = 20; a = a * b; b = a / b; a = a / b; printf("a=%d,b=%d\n",a,b); system("pause"); return 0; }
第四种是采用按位异或运算的方式:任意一个数与任意一个给定的值连续异或两次,值不变!
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(void) { int a = 10; int b = 20; a = a^b; b = a^b; a = a^b; printf("a=%d,b=%d\n",a,b); system("pause"); return 0; }
第五种是采用移位的方法:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(void) { int a = 10; int b = 20; a = a << 16; a = a | b; b = a >> 16; a = a & 0xffff; printf("a=%d,b=%d\n",a,b); system("pause"); return 0; }
此方法的另一个版本:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(void) { int a = 10; int b = 20; a <<= 8; // 将a移动到高位 a += b; // 将b的值加到a移动之后的低位 b = a >> 8; // 取a原来的值 a = a & 0xff; // 取新移进来的b,高位直接通过与运算赋值为0 printf("a=%d,b=%d\n",a,b); system("pause"); return 0; }