if(heading == 2){
nextY = (y-1) % 20;
nextX = x;
}
当调试这个程序时,我的标题是2和y = 0,但是,当我来到这个if语句时,nextY变成-1。为什么它不能正常骑车? (0-19)?为什么我从这个陈述中得到-1?
if(heading == 2){
nextY = (y-1) % 20;
nextX = x;
}
当调试这个程序时,我的标题是2和y = 0,但是,当我来到这个if语句时,nextY变成-1。为什么它不能正常骑车? (0-19)?为什么我从这个陈述中得到-1?
这就是mod操作通常适用于编程中的负数(在我尝试过的所有语言中)。
但是你可以很容易地做MOD
nextY = (y + 20 - 1) % 20;
模运营商常为负输入返回负数之前做出一些积极。例如,C#将为您提供-356..359
中的表示x % 360
的数字。
而是减去1然后取模20,你可以添加19,这是同样的事情,但保持了一些积极,或者您可以使用三元运算符:
nextY = (y+19) % 20; // or
nextY = (nextY == 0) ? 19 : nextY - 1;
gotchya,生病只是做到这一点。 – wbarksdale 2011-02-08 04:32:50