Actionscript 3 -=运算符,与输出结果混淆

Actionscript 3 -=运算符,与输出结果混淆,actionscript-3,operators,flashdevelop,Actionscript 3,Operators,Flashdevelop,我最近在跟踪一行代码: x -= 353 - 350 然而,答案是-3 令我惊讶的是,我认为-=运算符如下所示: x = x - 353 - 350 这将等于-703 为什么实际答案是-3,而不是-703 我在本网站上搜索参考资料: 它给出的例子使我相信操作符-=应该产生-703 var x:uint = 5; x -= 5; // x is now 0 上面的例子不代表x=x-5是如何0?或者有没有我缺少的替代代码/逻辑?我已经用Python对其进行了测试。这似乎只是基本的算术 假设x

我最近在跟踪一行代码:

x -= 353 - 350
然而,答案是-3

令我惊讶的是,我认为-=运算符如下所示:

x = x - 353 - 350
这将等于
-703

为什么实际答案是
-3
,而不是
-703

我在本网站上搜索参考资料:

它给出的例子使我相信操作符-=应该产生-703

var x:uint = 5; x -= 5; // x is now 0

上面的例子不代表
x=x-5
是如何
0
?或者有没有我缺少的替代代码/逻辑?

我已经用Python对其进行了测试。这似乎只是基本的算术

假设
x
当前为
0

x-=353-350
这等于说
x=x-(353-350)


首先得到方括号的结果,然后方程是简单的
x=0-3
,它给出了结果:
-3

我已经用Python测试了它。这似乎只是基本的算术

假设
x
当前为
0

x-=353-350
这等于说
x=x-(353-350)

首先得到括号中的结果,然后方程是简单的
x=0-3
,它给出的结果是:
-3

运算符顺序:

-=
优先于
3
,而
+
-
优先于13(更高)

因此,代码的执行与

x -= (353 - 350)
x -= (3)
x -= 3;
x = x - 3;
根据基础数学:

x -= (353 - 350)
x += -(353 - 350)
x += (-353 + 350)
x += (-3);
操作员程序:

-=
优先于
3
,而
+
-
优先于13(更高)

因此,代码的执行与

x -= (353 - 350)
x -= (3)
x -= 3;
x = x - 3;
根据基础数学:

x -= (353 - 350)
x += -(353 - 350)
x += (-353 + 350)
x += (-3);

丹尼尔和马克是对的

您使用了错误的运算符: 要得到-703,您应该像这样使用-=

var x:int = 0;
x -= 353 + 350;
// x -= (353 + 350); 
// So => x -= 703
trace(x); //output -703
因为

x -= 353 - 350;
表示x-=3;
同样的逻辑。丹尼尔和马克是对的

您使用了错误的运算符: 要得到-703,您应该像这样使用-=

var x:int = 0;
x -= 353 + 350;
// x -= (353 + 350); 
// So => x -= 703
trace(x); //output -703
因为

x -= 353 - 350;
表示x-=3;
相同的逻辑。

我的答案有帮助吗?我的答案有帮助吗?我还是不明白,因为如果我们对这个例子应用相同的逻辑:var x:uint=5;x-=5;//x现在是0,结果是:x-=5对不起,在结束前意外地按了回车键。我仍然不明白,因为如果我们对这个例子应用相同的逻辑:var x:uint=5;x-=5;//x现在是0,结果是:x-=5X=x-5X=-5X应该是0,根据我在原始帖子中链接的源的答案,但我也会在这里键入链接:“减法赋值:将表达式1的值赋值给表达式1-expression2”为什么如果x=5=>x-=5x=5-50@Zulu你能接受答案吗,所以这篇文章将被标记为已解决?丹尼尔和马克的答案在我看来是非常清楚的,即使我添加了另一个例子!谢谢。
x-=5
x=x-5
,但请记住,左手边就是用来分配任务的。这不是一个真正的等式
x=x-5
执行
x-5
部分,然后将结果分配给左侧x。左侧x仅作为写入目的地,从不从中读取。同样,右侧的x仅作为数据源存在,并且从未写入。所以
x-=5
执行为
x=x-5
->
x=5-5
->
x=0
,而你的
x
变量现在包含
0
。我仍然不明白,因为如果我们对这个例子应用相同的逻辑:var x:uint=5;x-=5;//x现在是0,结果是:x-=5对不起,在结束前意外地按了回车键。我仍然不明白,因为如果我们对这个例子应用相同的逻辑:var x:uint=5;x-=5;//x现在是0,结果是:x-=5X=x-5X=-5X应该是0,根据我在原始帖子中链接的源的答案,但我也会在这里键入链接:“减法赋值:将表达式1的值赋值给表达式1-expression2”为什么如果x=5=>x-=5x=5-50@Zulu你能接受答案吗,所以这篇文章将被标记为已解决?丹尼尔和马克的答案在我看来是非常清楚的,即使我添加了另一个例子!谢谢。
x-=5
x=x-5
,但请记住,左手边就是用来分配任务的。这不是一个真正的等式
x=x-5
执行
x-5
部分,然后将结果分配给左侧x。左侧x仅作为写入目的地,从不从中读取。同样,右侧的x仅作为数据源存在,并且从未写入。因此,
x-=5
执行为
x=x-5
->
x=5-5
->
x=0
,您的
x
变量现在包含
0
@Zulu我很高兴看到反馈,并且您理解了这个原理。这里有一个推荐信,你可能会喜欢:祝你有一个愉快的一天!谢谢你的反馈!还要检查++x和x++之间的差异!这可能会帮助你…@Zulu我很高兴看到反馈,而且你理解这个原则。这里有一个推荐信,你可能会喜欢:祝你有一个愉快的一天!谢谢你的反馈!还要检查++x和x++之间的差异!这可能会帮助你。。。