夹紧无符号整数

时间:2012-12-04 05:24:53

标签: c++ unsigned

钳位无符号整数的正确方法是什么?

例如,说我有:

 unsigned int ui = 5U;

现在我想从中减去一个值:

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

如果MAGIC_VALUE> = 5,我希望ui包含0。

然而,我不能只是减去MAGIC_VALUE,因为如果MAGIC_VALUE>表达式ui - MAGIC_VALUE将环绕到UINT_MAX。 5并最终被夹紧到上限255.这与我想要的相反!

有什么技巧可以解决这个问题吗?

0 个答案:

没有答案