3

たとえば、私が持っている場合:

if(x < 2*0.025) { ... }

getは2*0.025毎回計算されますか? または0.05、乗算演算を毎回実行する必要がないように代入されますか?

つまり、0.05代わりに使用する方が効率的2*0.025ですか?

4

2 に答える 2

5

私が知っているすべてのコンパイラは、定数の折りたたみを実装しています。つまり、コンパイル時に定数式を計算するため、違いはありません。ただし、標準はそれを義務付けていません。

定数式は、実行時ではなく変換中に評価できるため、定数がある場所であればどこでも使用できます。

一部のコンパイラでは、この最適化を明示的に無効にすることができます。たとえば-frounding-math、gcc の浮動小数点式の定数の折りたたみを無効にします。

于 2012-02-19T02:36:19.833 に答える
0

定数式は事前に計算されます。

于 2012-02-19T02:34:21.237 に答える