我最近出现了这个剧本:
$i = 0;
$x = $i++; $y = ++$i;
print $x; print $y;
输出为02
。我可以想象,$i
++
的{+ 1}}在+1时为+1,但为什么$y
输出为2?为什么不输出11
或01
?
答案 0 :(得分:2)
后增量与预增量。
发布:结尾$i++
表示返回$i
,然后递增。
Pre:Preceding ++$i
表示$i
递增并返回结果。
因此$x
设置为0
($i
的初始值),然后递增。 $i
现在等于1
。然后$i
再次递增到2
,该值在$y
中设置。最后,$x=0
和$y=2
以及$i=2
。您的代码可以重写为:
$i=0;
//x, post increment, set x to i then increment after.
$x=$i;
$i=$i+1;
//y, pre increment, increment first and then set y to i.
$i=$i+1;
$y=$i;
同样的事情适用于减量运算符--$i
和$i--
。