我试图修改一个整数来获得一个数组位置,以便它循环.i %
arrayLength对于正数而言做得很好,但对于负数而言,这一切都是错误的.
4 % 3 == 1
3 % 3 == 0
2 % 3 == 2
1 % 3 == 1
0 % 3 == 0
-1 % 3 == -1
-2 % 3 == -2
-3 % 3 == 0
-4 % 3 == -1
Run Code Online (Sandbox Code Playgroud)
所以我需要一个实现
int GetArrayIndex(int i, int arrayLength)
Run Code Online (Sandbox Code Playgroud)
这样的
GetArrayIndex( 4, 3) == 1
GetArrayIndex( 3, 3) == 0
GetArrayIndex( 2, 3) == 2
GetArrayIndex( 1, 3) == 1
GetArrayIndex( 0, 3) …Run Code Online (Sandbox Code Playgroud) 我知道这是一个非常基本的问题(我对 C# 比较陌生),但不知何故我在互联网上找不到任何有关它的信息。
我只是想了解“%”运算符的作用,我以前见过应用程序并且有一些想法,但不能 100% 确定它到底做什么。
例如,下面是每 10 帧执行一次的方法(在 Unity 中):
void Update() {
frames++;
if (frames % 10 == 0) {
// method
}
}
Run Code Online (Sandbox Code Playgroud)
下面是显示的游戏时间计算:
// time = incremented by 1 every second
int seconds = (time % 60);
int minutes = (time / 60) % 60;
int hours = (time / 3600) % 24;
// int days = (time / 86400) % 365;
Run Code Online (Sandbox Code Playgroud)
在这些示例中 % 运算符到底做了什么以及我怎样才能最好地理解它。