這可能是一個沒有教養的問題 - 或者是一種奇怪的問題。減法操作的順序?
我的問題是,爲什麼這個代碼不工作:
if (up == true)
{
SDL_Delay(pause_t);
player.setY(player.velocity - player.getY());
}
if (left == true)
{
SDL_Delay(pause_t);
player.setX(player.velocity - player.getX());
}
然而,這個代碼的工作:
if (up == true)
{
SDL_Delay(pause_t);
player.setY(player.getY() - player.velocity);
}
if (left == true)
{
SDL_Delay(pause_t);
player.setX(player.getX() - player.velocity);
}
兩個代碼之間的區別是,在第一個例子,我在調用位置函數之前,首先要減去一個部分(對象的速度)。 當我運行這段代碼時,會發生什麼事,它不會在軸上移動1,而是10. Y軸的大小大於10,所以我實際上並沒有減去它自己的座標。
但是,在第二段代碼中,在調用我的位置函數之後,我在最後減去速度。 第二段代碼會發生什麼,對象會移動一個像素(速度的整數值)。
對於那些想知道我在做什麼的人,這些是我的openGL遊戲的控件。這是爲了移動一個物體。
而爲了記錄,這不是一個重要的問題。我的代碼確實有效。我只是好奇它爲什麼如此運作。
我不知道我明白。你問你爲什麼'a - b'和'b - a'有不同的結果? – Tim
是的,就是這樣。我意識到在正常的算術中,這將是明顯的原因。 但是,處理器調用函數之前,它試圖做算術,是否正確?這就是爲什麼我問我的問題。 – user1707244