4

符号なし整数をクランプする正しい方法は何ですか?

たとえば、私が持っているとしましょう:

 unsigned int ui = 5U;

今、私はそれから値を減算したい:

ui = Clamp(ui - MAGIC_VALUE, 0, 255);

MAGIC_VALUE >= 5 の場合、ui に 0 を含めたいと思います。

ただし、式ui - MAGIC_VALUEが if MAGIC_VALUE > 5 にラップアラウンドしUINT_MAX、上限の 255 にクランプされるため、MAGIC_VALUE を減算することはできません。これは、私が望むものとは逆です!

これに対処するためのトリックはありますか?

4

0 に答える 0