我发现增加有限变量的方法非常温和,只需:
++i %= range;
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个技巧不适用于减量,因为-1 % v == -1.
如何在C++中改进这一点?
为了避免负模数行为,您可以先将其设为正数:
i = (i - 1 + range) % range;
Run Code Online (Sandbox Code Playgroud)
但是,如果range大于INT_MAX的一半,这是不好的.(或任何类型i).
这似乎更简单:
i = (i ? i : range) - 1;
Run Code Online (Sandbox Code Playgroud)