c语言实现元素交换的两种境界
1.使用中间变量
#include<stdio.h> int main() { int a=10; int b=20; int t=0;//中间变量 t=a; a=b; b=t; printf("%d %d\n",a,b); }
2.不使用中间变量
这里需要明白位运算^ 相同为0不同为1
该运算符为异或运算符
例如数字10的二进制序列为00000000001010
数字20的二进制序列为 00000000010100
异或结果: 000000000011110
如果10异或10结果是: 00000000000000
用0异或20得到: 00000000010100 (结果还为20)
#include<stdio.h> int main() { int a=10; int b=20; a=a^b;//从上面我们知道a^a==b^b==0 b=a^b;//将上一行a带入相当于a^b^b其实就是a a=a^b;//同理相当于a^b^a其实就是b printf("%d %d\n",a,b); }