if(heading == 2){
nextY = (y-1) % 20;
nextX = x;
}
调试这个程序时,我的标题是2,y = 0,但是,当我来到这个if语句时,nextY变为-1。为什么不能正常骑行? (0-19)?
答案 0 :(得分:3)
这就是mod操作通常适用于编程中的负数(在我试过的所有语言中) 但是在做mod之前你可以轻松地使数字为正数
nextY = (y + 20 - 1) % 20;
答案 1 :(得分:1)
模数运算符通常会为负输入返回负数。例如,C#将为-356..359
表达式x % 360
提供一个数字。
不是减去1然后取模20,你可以加19,这是相同的但保持数字为正,或者你可以使用三元运算符:
nextY = (y+19) % 20; // or
nextY = (nextY == 0) ? 19 : nextY - 1;