本文共 808 字,大约阅读时间需要 2 分钟。
1.基本思路:另开辟一个空间i作为媒介,把num1的内容放在i内,把num2的内容放在num1内,再把i内的内容放在num2内,就完成交换。
#include#include int main(){ int i; int num1 = 2; int num2 = 3; i = num1; num1 = num2, num2 = i; printf("%d%d\n", num1, num2); system("pause"); return 0;}
2,通过加法交换:这个方法不需要重新开辟空间,但是会发生溢出。当num1的内容占满32个字节(2^32-1),再加1就会溢出。
#include#include int main(){ int num1 = 2; int num2 = 3; num1 = num1 + num2; num2 = num1 - num2; num1 = num1 - num2;//num1=3+2=5,num2=5-3=2,num1=5-2=3. printf("%d%d\n", num1, num2); system("pause"); return 0;}
3.通过位运算(最优方法):异或的法则是---相同为0,相异为1
#include#include int main(){ int num1 = 2; int num2 = 3; num1 = num1^num2;//010^011=001 num2 = num1^num2;//001^011=010 num1 = num1^num2;//001^010=011 printf("%d%d\n", num1, num2); system("pause"); return 0;}