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++之间的差异!这可能会帮助你。。。