0

我正在尝试将一些算法转换为另一种语言,并且被困在几行代码中。我要转换的语言是 actionscript 并将其转换为 lua。

我遇到了这条线

return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b

这是一样的吗

s = s*1.525
return c/2*(t*t*((s+1)*t - s)) + b

还是一样

newS = s*1.525
return c/2*(t*t*((newS+1)*t - s)) + b

所以一旦 *= 被调用, s 会在整个函数中发生变化,所以 s 的每个实例都是新值,还是只计算一次并且 s 保留它之前的值?

任何帮助,将不胜感激。谢谢!

4

1 回答 1

3

赋值运算符在同一嵌套级别上从右到左进行评估。由于您的原始语句已s*=1.25包含在括号中,因此在加法、乘法等*=之前执行了赋值,因此,您的第一个变体是正确的变体。1t

于 2012-10-22T05:02:32.770 回答