首页 > 代码库 > 交换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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。