C++中两个数值交换的几种方法

本文详细介绍了C++中实现数据交换的多种方法,包括使用第三变量、加减法、异或法以及引入指针进行交换,并通过代码实例验证了每种方法的有效性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



#include<iostream>
#include<cmath>
using namespace std;
#define swap0(a,b)     \
{                        \
    int t=a;          \
    a=b;              \
    b=t;               \
}/*引入第三变量法("\"为连接符,在其后不能有空格或其它字符;用宏定义的方法使得数据交换比函数更有效率)*/

#define swap1(a,b)  \
{                         \
    a=a+b;          \
    b=a-b;           \
    a=a-b;           \
}/*加减法*/

#define swap2(x,y)   \
{                         \
      x=x^y;           \
      y=x^y;           \
      x=x^y;           \
}/*异或法(异或运算符,位值相同为0,不同为1) //^(异或)只能对int,char..*/

/*经测试,宏定义里的参数最多用两次,如swap0与swap1里的a,b*/
 
void swap3(int *a,int *b) 

    int t; 
    t=*a; 
    *a=*b; 
    *b=t; 
} /*引入第三变量指针法(若定义中间值*t,需让*t有空间,即指向一个变量)*/

void swap4(int* a,int* b) 

    *a=*a+*b; 
    *b=*a-*b; 
    *a=*a-*b; 
} /*指针加减法*/

void swap5(int* a,int* b) 

   *a^=*b; 
   *b^=*a; 
   *a^=*b; 
} /*异或指针法*/

void swap6(int *a,int *b) 
{                  
   *a^=*b^=*a;       
   *b^=*a;           
}/*连写的异或指针法*/

 
int main()
{
     int x=9,y=7;
     swap(x,y);/*直接调用cmath中的swap函数*/
     cout<<x<<" "<<y<<endl<<endl;
     
      return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值