c++ - 递减和取模 - 如何在一行代码中递减负值

标签 c++ modulo

我发现了一种非常温和的方法来增加有限的变量,只是:

++i %= range;

不幸的是,这个技巧对递减不起作用,因为 -1 % v == -1

我如何在 C++ 中改进它?

最佳答案

要避免负模数行为,您可以先将其设为正数:

i = (i - 1 + range) % range;

但是,如果 range 大于 INT_MAX 的一半,这就不好了。 (或者 i 是什么类型)。

这看起来更简单:

i = (i ? i : range) - 1;

关于c++ - 递减和取模 - 如何在一行代码中递减负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092328/

相关文章:

PHP 取模怪癖

c - 从服务器获取数据时知道要接收多少

c++ - 计算一个大和的模数

c++ - while 循环字符 C++

c++ - 在 QT 中使 QPROPERTY 只读

javascript - 在 JavaScript 中显示带模数的数字序列

python - Python中负股息的模数

c++ - 另一个方向的隐式转换

c++ - 为什么将套接字绑定(bind)到接口(interface)失败?

c++ - Lua shutdown double free,lua线程在关闭期间还活着吗?