-= 运算符,与输出结果混淆
-= 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 - 5
是 0
吗?还是我缺少替代方案 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;
同样的逻辑。
我最近在跟踪一行代码:
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 - 5
是 0
吗?还是我缺少替代方案 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; 同样的逻辑。