Я хочу уменьшить значение на единицу, и, если оно достигнет нуля, установить максимальное значение. Есть ли способ сделать это с помощью математики, не прибегая к if (n-1 == 0) { n = max; }
Обратный сценарий увеличения значения на единицу и последующего обнуления, когда оно больше максимального, может быть легко достигнуто с помощью n = (n + 1) % (max + 1);
. Кроме того, это даже лучше, так как вы можете увеличить на любую величину (не только на одну), и она все равно будет правильно «оборачиваться».
Спасибо за ответы. Чтобы было ясно, я имел в виду вообще без булевой логики (если / еще) или булевых операторов (!, && и т. Д.). Мне было просто любопытно, как это сделать. Действительно ли правильный ответ ниже действительно делает его более нечитаемым, пока предоставляется комментарий? Было бы необходимо использовать это для более общего случая вычитания произвольного числа и ожидания правильного переноса.