我想将一个值减一,如果它达到零,则将其设置为最大值。有没有一种方法可以通过数学来做到这一点,而无需求助于 if (n-1 == 0) { n = max; }
使用 n = (n + 1) % (max + 1); 可以很容易地实现将值增加 1,然后在它大于 max 时将其设置为零的相反情况;
.此外,这甚至更好,因为您可以增加任何数量(不仅仅是一个)并且它仍然会正确地“包装”。
感谢您到目前为止的回答。明确地说,我的意思是根本没有任何 bool 逻辑 (if/else) 或 bool 运算符(!、&& 等)。我只是很好奇如何做到这一点。只要提供评论,下面的正确答案真的会让它更难读吗?对于减去任意数字并期望正确环绕的更一般情况,有必要使用它。
最佳答案
n = max - ((max - n +1)%max)
关于algorithm - 有没有办法只使用数学操作数(例如 mod)来实现这个非常简单的 bool 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282297/