PHP-传入两个下标,交换数组内两个下标所指向的值

发布于 2016-10-25 02:33:56 字数 157 浏览 1240 评论 4

可能重复的问题
如何不借助第三个变量实现两个变量之间的值的交换?

有不使用临时变量的方法么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

偏爱自由 2017-07-05 05:21:10

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

异或法可以完成对整型变量的交换,对于浮点型变量它无法完成交换。

瑾兮 2017-06-21 05:16:23

用异或操作
类似下面:
a ^= b;

b ^= a;

a ^= b;

清晨说ぺ晚安 2017-05-25 12:51:20

使用异或是有陷阱的,当两个下标相同时,就全部搞成0了

归属感 2016-12-23 12:28:14

整数的话,交换i,j:
i = i 异或 j;
j = i 异或 j;
i = i 异或 j;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文