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

-= Operator, confused with output result

我最近在跟踪一行代码:

x -= 353 - 350

然而,答案是-3。

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

x = x - 353 - 350

然后等于 -703

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

我在这个网站上搜索参考: http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/operators.html

它给出的例子让我相信运算符 -= 应该产生 -703。

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

上面的例子难道不能代表 x = x - 50 吗?还是我缺少替代方案 code/logic?

我已经在 Python 中测试过了。看来只是基础算术..

假设 x 目前是 zero

x -= 353 - 350 等于说 x = x - (353 - 350)
首先得到括号的结果然后等式只是 x = 0 - 3 给出结果:-3

运算符优先级:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

-= 的优先级为 3,而 +- 的优先级为 13(更高),

所以代码的执行相当于

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

根据基础数学:

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

Daniel 和 Marc 是对的。

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

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

因为

x -= 353 - 350;

表示x-=3; 同样的逻辑。