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>3

理にかなっている

$a は 3 ですが、$a++ を実行すると 4 に増えます

$b は ++ アクションの直前の $a であるため、3 のままです

それが理にかなっていると考え$a++てください$a = $a + 1

于 2012-04-16T12:15:27.837 に答える
1

$a++$a別の変数に割り当てるかどうかに関係なく、変数に明示的に増加するように指示します! これにより、if ($a++ > 10) { // ...ループのようなことを行うことができます。

あなたの場合、あなたは取る必要があります$b = $a + 1;

于 2012-04-16T12:07:51.783 に答える
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 に答える