たとえば、私が持っている場合:
if(x < 2*0.025) { ... }
getは2*0.025
毎回計算されますか? または0.05
、乗算演算を毎回実行する必要がないように代入されますか?
つまり、0.05
代わりに使用する方が効率的2*0.025
ですか?
たとえば、私が持っている場合:
if(x < 2*0.025) { ... }
getは2*0.025
毎回計算されますか? または0.05
、乗算演算を毎回実行する必要がないように代入されますか?
つまり、0.05
代わりに使用する方が効率的2*0.025
ですか?
私が知っているすべてのコンパイラは、定数の折りたたみを実装しています。つまり、コンパイル時に定数式を計算するため、違いはありません。ただし、標準はそれを義務付けていません。
定数式は、実行時ではなく変換中に評価できるため、定数がある場所であればどこでも使用できます。
一部のコンパイラでは、この最適化を明示的に無効にすることができます。たとえば-frounding-math
、gcc の浮動小数点式の定数の折りたたみを無効にします。
定数式は事前に計算されます。