首页 > 代码库 > 交换a和b

交换a和b

// 交换a和b.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"void swap1(int& a, int& b){	int c = a;	a = b;	b = c;}/*加减法运算达到交换a和b,缺点:做a+b 和 a-b运算时可能会导致数据溢出。*/void swap2(int& a, int& b){	a = a+b;//使用加减运算完成交换	b = a-b;	a = a-b;}/*利用异或:异或:   对应的二进制位  如果相同则为0,不形同则为1按位与: 只要有一个为0 就为0按位或: 只要有一个为1 就为1*/void swap3(int& a, int& b){	a = a^b;	b = b^a;	a = a^b;}int _tmain(int argc, _TCHAR* argv[]){	int a1 = 1, b1 = 2;	int a2 = 3, b2 = 4;	int a3 = 5, b3 = 6;	int a = 2147483647, b = 23232323;//虽然这里产生了溢出,但是编译运行还是交换了数据,应该是编译器内部做了处理优化	swap1(a1,b1);	printf("a1=%d, b1=%d\n",a1,b1);	swap2(a2,b2);	printf("a2=%d, b2=%d\n",a2,b2);	swap3(a3,b3);	printf("a3=%d, b3=%d\n",a3,b3);	swap2(a,b);	printf("a=%d, b=%d\n",a,b);	getchar();	return 0;}

交换a和b