【发布时间】:2017-09-16 17:23:26
【问题描述】:
实现(-1)^n * a 是否有既定的习惯用法?
pow(-1,n) * a 的明显选择似乎很浪费,(1-2*(n%2)) * a 丑陋且效率也不高(两次乘法和一次加法,而不是仅仅设置符号)。我想我现在会选择n%2 ? -a : a,但引入条件似乎也有点可疑。
【问题讨论】:
-
如果这与语言无关,为什么要使用特定的语法?可能存在一种可以有效处理
(-1)^n * a的语言。 -
我会选择 pow(-1,n) * a。读者最容易理解。很难说,因为您不是在谈论特定的语言,但是 pow() 很有可能在其中已经完成了一些优化/特殊情况。例如,查找一个 C 实现,它可能与您所期望的完全不同。
-
标记这个问题语言不可知论的要点是语言通常同意它们提供的功能,例如
atan2或2<<n.