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 のすべてのインスタンスが新しい値になりますか、それとも 1 回だけ計算され、s は以前の値を保持しますか?

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

3

代入演算子は、ネストの同じレベルで右から左に評価されます。元のステートメントがs*=1.25括弧で囲まれているため、*=代入は の加算1、 による乗算tなどの前に実行されます。したがって、最初のバリアントは正しいものです。

于 2012-10-22T05:02:32.770 に答える