Math 减法的运算顺序?

Math 减法的运算顺序?,math,arithmetic-expressions,Math,Arithmetic Expressions,这可能是一个没有受过教育的问题,也可能是一个奇怪的问题 我的问题是为什么这个代码不起作用: if (up == true) { SDL_Delay(pause_t); player.setY(player.velocity - player.getY()); } if (left == true) { SDL_Delay(pause_t)

这可能是一个没有受过教育的问题,也可能是一个奇怪的问题

我的问题是为什么这个代码不起作用:

            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游戏的控件。它是用来移动物体的

为了记录在案,这不是一个重要的问题。我的代码确实有效。我只是好奇为什么它会这样工作

在第一个例子中,我在调用位置函数之前先减去一部分(对象的速度)

不,在第一个版本中,你要减去旧的位置,而不是减去速度

您描述的代码是:

player.setY((-player.velocity) + player.getY());

这就行了。

我不确定我是否理解。你是否在问为什么
a-b
给出的结果与
b-a
不同?是的,就是这样。我意识到在普通的算术中,这是显而易见的原因。但是,处理器在尝试执行算术之前调用该函数,对吗?这就是为什么我问我的问题。减法不是这样做的吗->作为一种反对你所建议的相反的方式吗?你总是从第二个数中减去第一个数。@user1707244你知道4-2是2,对吗?不是-2?我可能上错学校了-或者我们在欧罗巴就是这样做的。。或者我完全不在了。当我在小学的时候,我们被教导4-2就是-2。。。正如上面的评论所解释的,它是这样的->。如在4中减去2而不是反之亦然。@ USER 1707244:即使是这样做的,它不是C或C++,但是,你的第一个和第二个代码段仍然是相反的。另外,我认识足够多的欧洲人,他们知道这不是一个全大陆的符号,而是你错了。@user1707244如果我可以问一下,那是哪个国家?至少在荷兰,4-2是正2