【发布时间】:2020-03-03 02:33:40
【问题描述】:
$a = 0;
if($a == ++$a) // Evaluates to true
if($a > $a++) // Evaluates to true
在 c 中运行的相同代码的计算结果为 false。
这怎么可能?
【问题讨论】:
-
php.net/manual/en/language.operators.precedence.php 可能会有所帮助。
++比==具有更高的优先级,但您也在比较两边的相同变量。这可能会导致意想不到的结果。 -
++$a将 $a 的值加一,然后将新值“返回”到表达式的该位置。$a == ++$a– 所以++$a将其设为 1,然后将其与 $a 的 当前 值进行比较,此时该值 已为 1。$a++反过来工作 - $a 的当前值返回到表达式中,只有在那之后 $a 才会增加 - 所以对于第二个,你实际上有1 > 0这里。 -
@04FS 我会把它作为答案^^ :)
-
在比较检查中,您永远不应该相信这些操作。这取决于语言实现。
-
为什么这个问题被如此糟糕地投票 - 它实际上很有趣,或者我认为。第一个 if 条件有意义(
true,1==1),但我仍然无法理解第二个 if 条件返回true...
标签: php increment logical-operators