【发布时间】:2012-04-05 05:03:00
【问题描述】:
在大多数语言中,如果你想交换两个变量,就像这样:
var c = b
b = a
a = c
是的,如果您愿意,您可以使用 XOR 进行花哨的 hack,但对于单个操作,通常需要 3 行代码。是否有任何语言将交换变量作为语言中的原语?
【问题讨论】:
-
要清楚一点,即使它是语言的原始语言,它仍然可能被翻译成机器代码中的 3 个不同的操作,除非您的机器代码支持纯交换(在 x86 上,您可以使用 XCHG 运算符,但这意味着您还希望同步对内存的访问,这实际上可能会使其变慢)。所以换句话说,你选择的语言中有多少行代码对编译/jitted代码中实际发生的事情几乎没有影响,因此可能对实际代码性能影响很小。
-
XOR 技巧不是一种花哨的技巧,而是一种可憎的东西。如果您在一个无法为临时节省一点额外存储空间的系统中运行,那么通过简单传输序列进行布尔运算的额外 CPU 负载也可能会让您失望。有时,您应该只优化可读性:-)
标签: variables programming-languages language-features