如何使用%运算符反转此公式

Jua*_*eza 1 c# formula sequence

我有一个具有5个状态的信号量变量.

我可以使用这个cicle来增加状态

X = (X + 1) % 5
Run Code Online (Sandbox Code Playgroud)

对于X = {0,1,2,3,4},生成{1,2,3,4,0}.

但是,如果我尝试向另一个方向减少状态,则不会带来正确的结果.

X = (X - 1) % 5
Run Code Online (Sandbox Code Playgroud)

对于X = {0,1,2,3,4},生成{-1,0,1,2,3} {{{0,0,1,2,3}} {}

例如在excel中,如果你尝试=MOD(-1;5)得到4.

joe*_*joe 6

代替

X = (X - 1) % 5
Run Code Online (Sandbox Code Playgroud)

使用

X = (X + 4) % 5
Run Code Online (Sandbox Code Playgroud)

这是短的形式

X = (X - 1 + 5) % 5
Run Code Online (Sandbox Code Playgroud)

或一般而言

X = (X - 1 + n) % n
Run Code Online (Sandbox Code Playgroud)

这确保了参数()总是正的 - 因此除法余数也保持为正.