你什么时候不用第三个变量交换两个数字?

Sem*_*ior 4 algorithm swap coding-style

我已经阅读了几个来源,讨论如何在不使用第三个变量的情况下交换两个数字.以下是一些最相关的:

我理解为什么在大多数情况下使用所描述的方法没有意义:代码变得混乱且难以阅读,并且通常比使用第三个"临时"变量的解决方案执行得更慢.但是,我发现的所有问题都没有讨论双变量方法在实践中的任何好处.他们是否有任何救赎品质或利益(历史或现代),或者它们仅作为晦涩的编程琐事有用吗?

U2E*_*EF1 6

在这一点上,它只是一个巧妙的技巧.如果它有意义,虽然你的编译器将识别正常的交换并适当地优化它(但不能保证它会识别奇怪xor并适当地优化它).

  • @MarkRansom我猜大多数编译器大多数时候都使用更好的优化.例如,如果您只是使用临时变量,那么编译器可以使用CPU寄存器来存储该值,而不是将其保存在内存中.XOR技巧只增加了几个CPU操作.请记住:"变量"是为了程序员而存在的,并不一定与编译代码中发生的情况类似. (3认同)
  • @StriplingWarrior我认为这就是这个答案的重点 - 不需要使用花哨的技巧,编译器已经知道它们并且可以识别通过一个原本未使用的临时交换的简单交换.但这引出了一个问题,是否有任何编译器实际上*进行*优化? (2认同)

归档时间:

查看次数:

2041 次

最近记录:

7 年,8 月 前