2

我正在为我的期末考试而学习,我遇到了这个问题:

考虑以下 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 吗?

4

5 回答 5

5

不,您在$a. 因此,$b将被分配一个值 3,然后,当执行该语句时,$a它会自增 1,并变为 4。所以,您现在将比较$a as 4$b as 3

因此你得到结果a > 3

于 2012-04-16T12:09:20.810 回答
2

$a++递增发生在表达式被评估之后,而发生++$a之前

所以在你的情况下,$b首先设置为 3,然后$a增加。

于 2012-04-16T12:10:16.517 回答
1

$a++明确告诉变量$a增加,无论您是否分配给另一个变量!if ($a++ > 10) { // ...这提供了执行诸如循环之类的 事情的可能性。

对于您的情况,您必须采取$b = $a + 1;

于 2012-04-16T12:07:51.783 回答
1

我测试了你的代码,我得到:

a>3

这是有道理的

$a 是 3,但是当你做 $a++ 时增加到 4

$b 只是 $a 在 ++ 动作之前,所以它保持 3

想想那$a++$a = $a + 1有道理的

于 2012-04-16T12:15:27.837 回答
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";
 }
 ?>
于 2012-04-16T12:10:34.943 回答