如果x = 3和z未分配,
为什么z = x-- - --x评估为2?
我的教授此刻正在讲授这个问题,而我现在仍然处于这种两难境地.不幸的是,没有人能解释为什么会这样.
以下是操作顺序,为了更好地理解而说明:
这-- prefix意味着在评估表达式之前将完成递减,并且postfix --意味着在评估表达式之后将进行递减.
好的,非常简单:
让我们添加括号:
z = ( x-- ) - ( --x )
^^这是编译器在标记化后看到代码的方式.
编译器从左到右评估等式(右部分)
现在,
x--等于POP的x值然后将其递减并将PUSH值返回到存储器中.好的,让我们一起做:
X的当前值为3,递减为2 - 因此,在等式中我们将得到3,但X将包含新值2.
--x等于递减X值,然后将此值POP化为等式.我们开始做吧:
X的当前值是2(因为之前的操作减少了它),现在我们想再次减少它.2-1 = 1,得到了它.
现在,回到整个等式:z = (3) - (1) = 2.
| 归档时间: |
|
| 查看次数: |
662 次 |
| 最近记录: |