PHP逻辑运算不一致
PHP inconsistency in logic operations
$a = 0;
if($a == ++$a) // Evaluates to true
if($a > $a++) // Evaluates to true
c 中的相同代码 运行 计算结果为 false。
这怎么可能?
++$a
将 $a
的值递增 1,然后将新值“returns” 放入表达式的该位置。
$a == ++$a
– 所以 ++$a
使其成为 1
,然后将其与 $a
的 当前 值进行比较,已经是 1
了。
$a++
以相反的方式工作 - $a 的当前值返回到表达式中,只有在那之后 $a
才会递增 - 所以对于第二个,你有效地有 1 > 0
这里。
(使用 $a > ++$a
而不是 $a
会首先递增,因此实际上是 1 > 1
,导致 false
。)
$a = 0;
if($a == ++$a) // Evaluates to true
if($a > $a++) // Evaluates to true
c 中的相同代码 运行 计算结果为 false。
这怎么可能?
++$a
将 $a
的值递增 1,然后将新值“returns” 放入表达式的该位置。
$a == ++$a
– 所以 ++$a
使其成为 1
,然后将其与 $a
的 当前 值进行比较,已经是 1
了。
$a++
以相反的方式工作 - $a 的当前值返回到表达式中,只有在那之后 $a
才会递增 - 所以对于第二个,你有效地有 1 > 0
这里。
(使用 $a > ++$a
而不是 $a
会首先递增,因此实际上是 1 > 1
,导致 false
。)