为什么输出19?

时间:2015-04-27 08:18:46

标签: php

这个PHP代码背后的逻辑并不清楚答案19.答案如何才能成为19?逻辑是什么?

$i=5;
$i +=$i++ + ++$i;
echo $i;

3 个答案:

答案 0 :(得分:10)

$i=5;
$i +=$i++ + ++$i;
     ^
     Take value of $i as 5 then increment to 6
              ^
              increment value of $i from 6 to 7, and use the 7
          ^
          5 + 7 = 12
   ^ $i is already 7, because of the increments in the previous operations,
     so add the 12 we've just calculated, giving 19

答案 1 :(得分:2)

首先,让我们考虑以下代码:

from more_itertools import unique_justseen as once_in_row

输出是<?php $e = 0; $e += ++$e; echo $e; ,还是2

第二行中的一行,等式1的右侧将增加++$e;的值,使$e(暂时)等于1.

当等式的左侧运行时,$e已经等于$e,因此1将添加该值,所以基本上,该行确实显示{{1} }}

1

当我们对前面给出的等式做同样的事情时,

$e = 1 + 1

这里的重要性是发布和预增量。

  • <?php $e = 0; $e = 1 + 1; echo $e; 递增i并计算为i的新值。
  • $i=5; $i +=$i++ + ++$i; echo $i; 计算i的旧值,并递增i。

计算++i后,在右侧,i++(将为5)和$i += $i++ + ++$i;(将为7)。

++$i(变为$i++)表示$i += 5 + 7将等于7 + 5 + 7

答案 2 :(得分:-1)

$i += $i++ + ++$i ; 
$i = $i + ($i+1 + 1+$i);
19 = 7 + (5 + 7);