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