交换两个参数不含第三参数

不适用第三个参数交换两个参数的值

  1. 算数法
    实质是对变量的加减运算;
//伪代码
int a,b;
a = 5;
b = 3;
a = b - a;//a = -2;
b = b - a;//b = 5;
a = a + b;//a = 3
  1. 指针地址操作
    是地址做减法和加法,地址的互相替换;
    此处要考虑地址的大小,不可以0x00000010-0x00000120。
int * a;//假设a的地址0x00000100
int * b;//b的地址0x00000120
a = new int(5);
b = new int(-3);
a = (int *)(b - a);//0x00000020
b = (int *)(b - a);//0x00000120 - 0x00000020
a = (int *(a + b);//0x00000020 + 0x00000010
  1. 位运算
    通过异或运算实现变量的对换;’
int a = 5; //00000101
int b = -3;//11111100
a = a^b;   //11111001
b = a^b;   //00000101
a = a^b;   //11111100
  1. 乘除法
    适合非负数
int a = 5;
int b = -3;
if(a < 0 )
{
	a = a*b;
	b = -a/b;
	a = a/b;
}
else if(b < 0)
{
	a = a*b;
	b = a/b;
	a = -a/b;
}
else
{
	a = a*b;
	b = a/b;
	a = a/b;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值