符号なし整数を最も近い小さいまたは等しい偶数に丸めたい場合、2 で割ってから 2 を掛ければよいですか? 質問する

符号なし整数を最も近い小さいまたは等しい偶数に丸めたい場合、2 で割ってから 2 を掛ければよいですか? 質問する

例えば ​​:

f(8)=8
f(9)=8

できますかx = x/2*2;?コンパイラがそのような表現を最適化してしまうリスクはありますか?

ベストアンサー1

コンパイラは、プログラムに副作用をもたらさない限り、任意の最適化を行うことができます。あなたの場合、式は奇数に対して異なる値を持つため、'2' をキャンセルすることはできません。

x / 2 * 2評価される厳密にと同様に(x / 2) * 2、 が整数型のx / 2場合は整数演算で実行されます。x

これは実際、慣用的な丸め手法です。

おすすめ記事