如果 x = 3 且 z 未分配,为什么 z = x-- - --x 的计算结果为 2
if x = 3 and z is unassigned, why does z = x-- - --x evaluates to 2?
如果x = 3
和z未分配,
为什么z = x-- - --x
的计算结果为 2?
我的教授目前正在讲授这个问题,而我目前正陷入这种困境。不幸的是,没有人能解释为什么会发生这种情况。
在 x--, x = 3 上,之后是 2。在 --x 上,x = 1,因为减法(从 2 开始)是事先完成的。
因此,3 - 1 = 2。
以下是操作顺序,为了更好地理解,进行了说明:
- x-- - --x 保持 x 的值(我们称之为 tmpA)。 tmpA 是 3。
- x-- - --x 减少 x。现在是2。
- x-- - --x 减少 x。现在是 1。
- x-- - --x 保持 x 的值(我们称之为 tmpB)。 tmpB 是 1。
- x-- - --x 从计算值执行子结构。 3 - 1 = 2。
-- prefix
表示递减将在计算表达式之前完成,postfix --
表示递减将在计算表达式后完成。
好的,它很简单:
让我们添加括号:
z = ( x-- ) - ( --x )
^^这是编译器在标记化后查看代码的方式。
编译器从左到右计算公式(右侧)
现在
x--
等于 POP x 的值,然后将其递减并推回内存中的值。好的,让我们这样做:
的当前值为 3,递减为 2 - 因此,在等式中,我们将得到 3,但 X 将包含新值 2。
--x
等于递减 X 值,然后将该值 POP 到等式中。让我们来做吧:
X 的当前值是 2(因为以前的操作减少了它),现在我们想再次减小它。 2-1 = 1,知道了。
现在,回到整个等式:z = (3) - (1) = 2
.
相关文章:
- 根据元素和容器大小计算边距
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 使用D3.js计算带有字母间距的文本长度
- 使用CSS或JavaScript计算分页符的数量
- 可以't计算自定义谷歌地图的js
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- JavaScript计算帮助(乘以时间)
- 如何计算对象文字中的键
- JavaScript循环无法正确计算/显示结果
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- 四舍五入JavaScript计算
- 计算HTML中的页数
- 使用jQuery计算数组中的对象以更改进度条
- 如何在jquery中使用实时计算求和值
- 计算多个项目的价格
- 计算CSS3缩放框在另一个框中的最高位置
- 如何计算二十面体的法线
- if(foo!==null)的计算结果为true,即使foo为null
- 在Angular中重新使用HTML端的计算文本
- ngIf的计算结果始终为true