我正在为我的期末考试而学习,我遇到了这个问题:
考虑以下 PHP 代码,执行后编写输出
<?php $a=3; $b=$a++; IF($a>$b) { echo "a>$b"; } else if ($a == $b) { echo "a=$b"; } else { echo "a < $b"; } ?>
当我在我的文本编辑器中输出它时,我得到了a < 3
,但我不明白为什么?
我认为 a 分配给 3 并且 b 也分配给 a++ 3 和 3==3 所以应该打印出 a==3 吗?
我正在为我的期末考试而学习,我遇到了这个问题:
考虑以下 PHP 代码,执行后编写输出
<?php $a=3; $b=$a++; IF($a>$b) { echo "a>$b"; } else if ($a == $b) { echo "a=$b"; } else { echo "a < $b"; } ?>
当我在我的文本编辑器中输出它时,我得到了a < 3
,但我不明白为什么?
我认为 a 分配给 3 并且 b 也分配给 a++ 3 和 3==3 所以应该打印出 a==3 吗?
不,您在$a
. 因此,$b
将被分配一个值 3,然后,当执行该语句时,$a
它会自增 1,并变为 4。所以,您现在将比较$a as 4
和$b as 3
。
因此你得到结果a > 3
$a++
递增发生在表达式被评估之后,而发生++$a
在之前。
所以在你的情况下,$b
首先设置为 3,然后$a
增加。
$a++
明确告诉变量$a
增加,无论您是否分配给另一个变量!if ($a++ > 10) { // ...
这提供了执行诸如循环之类的 事情的可能性。
对于您的情况,您必须采取$b = $a + 1;
我测试了你的代码,我得到:
a>3
这是有道理的
$a 是 3,但是当你做 $a++ 时增加到 4
$b 只是 $a 在 ++ 动作之前,所以它保持 3
想想那$a++
是$a = $a + 1
有道理的
<?php
$a=3;
$b=$a++;
// $b = 3 and $a = 4 now
IF($a>$b)
{
echo "a>$b";
}
else if ($a == $b)
{
echo "a=$b";
}
else
{
echo "a < $b";
}
?>