Как правильно зажимать неподписанные целые?
Например, скажем, у меня есть:
unsigned int ui = 5U;
Теперь я хочу вычесть из него значение:
ui = Clamp(ui - MAGIC_VALUE, 0, 255);
Я хотел бы, чтобы пользовательский интерфейс содержал 0, если MAGIC_VALUE> = 5.
Тем не менее, я не могу просто вычесть MAGIC_VALUE в качестве выражения ui - MAGIC_VALUE
обернутся к UINT_MAX
если MAGIC_VALUE> 5 и в конечном итоге зажаты до верхнего предела, 255. Это противоположно тому, что я хочу!
Есть ли хитрость, чтобы справиться с этим?
Задача ещё не решена.
Других решений пока нет …