0
点赞
收藏
分享

微信扫一扫

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

Mhhao 2022-01-16 阅读 44
经验分享

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

  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;
}

举报

相关推荐

0 条评论