黑马程序员技术交流社区
标题:
两个变量值的交换问题
[打印本页]
作者:
Meniny
时间:
2014-8-16 09:30
标题:
两个变量值的交换问题
稍微说一下吧。
如果不借助临时变量,那么学过汇编的同学一定都能想到这样的方法:
a ^= b;
b ^= a;
a ^= b;
复制代码
但是,现在高级语言中的临时变量基本是自由使用的,通常我们会借助临时变量:
tmp = a;
a = b;
b = tmp;
复制代码
后者明显更具有可读性,也更有利于编译器辨别而使用更高效的代码,例如EXCH。
而且,后者明显还可以用于指针、浮点数这些变量,而不是像XOR那样只用于整数。
除此之外,针对前者,可能有的同学偷懒,直接写成:
a ^= b ^= a ^= b
复制代码
但这样一来就更糟糕了,因为你试图在序列点之间两次修改a,而这种做法是未定义的,所以在不同的编译器下可能会出现不同结果,比如icc
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2