【发布时间】:2018-02-13 17:34:46
【问题描述】:
如下代码
<?php
$a=1; $b=$a++; var_dump($b);
$a=1; $b=$a+$a++; var_dump($b);
$a=1; $b=$a+$a+$a++; var_dump($b);
$a=1; $b=$a+$a+$a+$a++; var_dump($b);
$a=1; $b=$a+$a+$a+$a+$a++; var_dump($b);
我得到了这个结果:
int(1)
int(3)
int(3)
int(4)
int(5)
我预计是 1,2,3,4,5 而不是 1,3,3,4,5。为什么在$a=1; $b=$a+$a++;之后得到$b=3?
PHP 7.1.5-1+deb.sury.org~xenial+1 (cli)(构建时间:2017 年 5 月 11 日 14:07:52)(NTS)
【问题讨论】:
-
奇怪..与
$b=$a+++$a++的结果相同 -
我不确定是否有一个正确的答案。
+的操作数评估顺序是否得到保证?如果不是,这只是未定义的行为。 -
好问题。但我想不通!为什么会这样!
-
@Thamilan
$a++ + $a(任何带有后增量运算符)取决于未定义的操作顺序,而应保证$a + ++$a(任何带有前增量运算符)始终具有结果相同。