【发布时间】:2012-10-01 19:37:39
【问题描述】:
这可能是一个没有受过教育的问题 - 或者是一个奇怪的问题。
我的问题是为什么这段代码不起作用:
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不同? -
是的,就是这样。我意识到在普通算术中,这是显而易见的原因。但是,处理器在尝试进行算术运算之前调用该函数,对吗?这就是我问这个问题的原因。
标签: math arithmetic-expressions