这是我的代码
$f1 = 1;
$f2 = ++$f1;
$f3 = ++$f2;
$f4 = ++$f3;
echo $f1 . '<br />'.$f2.'<br />'.$f3.'<br />' .$f4. '<br />';
输出是:
2
3
4
4
我预计$ f4值为5,但它是4。 我错过了什么?
答案 0 :(得分:3)
$f1 = 1;
将{1}分配给$f1
。
$f2 = ++$f1;
预增量$f1
。所以它现在是2.而且这被分配给$f2
。此时$f1
和$f2
都是2
。
$f3 = ++$f2;
预增量$f2
。所以它现在是3.而且这被分配给$f3
。此时$f2
和$f3
都是3
。
$f4 = ++$f3;
预增量$f4
。所以它现在是4.这被分配给$f4
。此时$f3
和$f4
都是4
。
答案 1 :(得分:1)
operator ++实际上增加了变量。你想要的是$fn + 1;
在最后一种情况下,$ f3保持3,增加到4,4分配给$ f4。
$f1 = 1;
$f2 = ++$f1; //both $f1 and $f2 = 2
$f3 = ++$f2; //both = 3
$f4 = ++$f3; //both = 4
答案 2 :(得分:1)
这很合乎逻辑,请跟着
$ f1 = 1; 数字1分配给$ f1,这里没什么特别的
$ f2 = ++ $ f1; 你预先增加$ f1,所以变成$ f1 = 2。然后将此值分配给$ f2。所以$ f = 2也是
$ f3 = ++ $ f2; 在这里你预先增加$ f2,所以$ f2变为'3',然后你将该值赋给$ f3。所以$ f3 = 3
$ f4 = ++ $ f3; 接下来,您预先增加$ f3。因为它是'3',现在变成'4'。然后将该值分配给$ f4,该值也变为'4'。因此,这将离开你
2 3 4 4
答案 3 :(得分:0)
$f1
是1
;您预先增加它并将2
分配给$f2
。 3
和$f3
,4
和$f4
也是如此。这些值与整个数字相匹配。
或者,另一种方式:从1
开始。你有三个增量操作。因此,最终结果必须是4
。