PHP-传入两个下标,交换数组内两个下标所指向的值
可能重复的问题
如何不借助第三个变量实现两个变量之间的值的交换?
有不使用临时变量的方法么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
可能重复的问题
如何不借助第三个变量实现两个变量之间的值的交换?
有不使用临时变量的方法么?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
(1)加减法。
a = a + b;
b = a - b;
a = a - b;
该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失,例如对数据:
a = 3.123456
b = 1234567.000000
交换后各变量值变为:
a = 1234567.000000
b = 3.125000
很明显,原来a的值在交换给b的过程中发生了精度损失。
(2)乘除法。
a = a * b;
b = a / b;
a = a / b;
乘除法更像是加减法向乘除运算的映射,它与加减法类似:可以处理整型和浮点型变量,但在处理浮点型变量时也存在精度损失问题。而且乘除法比加减法要多一条约束:b必不为0。
(3)异或法。
a ^= b;
b ^= a;
a ^= b;
异或法可以完成对整型变量的交换,对于浮点型变量它无法完成交换。
用异或操作
类似下面:
a ^= b;
b ^= a;
a ^= b;
使用异或是有陷阱的,当两个下标相同时,就全部搞成0了
整数的话,交换i,j:
i = i 异或 j;
j = i 异或 j;
i = i 异或 j;