2012-04-16 13 views
2

を実行した後、私は私の決勝戦のために勉強していると私はこの質問に出くわした:混乱PHPプログラム

、この次の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に割り当てられ、bが++ 3に割り当てられ、3が3に割り当てられていると思ったので、== 3を出力する必要がありますか?

+0

'echo $ a'を試しましたか? – JJJ

答えて

1

$a++は、変数$aを明示的に増加させるように指示します。別の変数に割り当てるかどうかは関係ありません。 これはループ内にif ($a++ > 10) { // ...のようなことをする可能性を与えます。 [いいえ$b = $a + 1;

5

を取る必要がありますあなたのケースのために

、あなたは$a上のポストインクリメント演算子を使用しています。したがって、$bには値3が割り当てられ、後でその文が実行されるときには$aは1だけインクリメントされ、4になります。したがって、今度は$a as 4$b as 3を比較します。したがって

あなたは$a++インクリメントが++$aが前が起こるでしょうしながら、式は、評価されます後に発生した結果にa > 3

2

を取得します。

あなたのケースでは、$bは最初に3に設定され、次に$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"; 
} 
?> 
1

私はあなたのコードをテストし、私が取得:

$ aが3ですが、あなたは$ ++

$ bを行うとき4に増加しているになります

a>3 

++アクションの前にちょうど$ aがあるので、そのままです3

をと考えてくださいthenそれは意味をなさない