ホームページ >バックエンド開発 >PHPチュートリアル >i++ の問題
int I = 3;
I = I + I++ + ++I;
上記のコードは Java/C#/JavaScript では 11 を出力しますが、PHP の計算と他の 3 つのメソッドの違いは何ですか?困惑しています、アドバイスをお願いします
PHP によれば、
3+4+5~
++i の使用法 (a=++ i を使用) 、i=2 の例)
まず i の値に 1 を加算します (つまり、i=i+1)。それからそれを変数 a に代入します (つまり、a=i)。
次に、 a は 3 に等しく、 i の値は 3 に等しい。
したがって、a=++i は i=i+1, a=i と同等です
i++ の使用法 (例として a=i++, i=2 を取り上げます)
まず i の値を変数 a に代入します (つまり、 , a=i )、その後、i の値は 1 だけ増加します (つまり、i=i+1)。
最終的な a の値は 2 に等しく、i の値は 3 に等しくなります。
つまり、a=i++ は a=i, i=i+1 と同等です
PHP によれば、
3+4+5~
になります。試してみました
$i=3;
$k=3;
$j=$j++ + ++$j + $ j ;
$k=++$k + $k++ + $k;
echo $j;
それぞれ 12 13 13 を出力します
これは php のバグです
すべての php5 にはこの問題があります (少なくとも私が手元にある 3 つのバージョン)
問題は、最初の $i が値を渡す方法にあります。たとえば、
$i = 3;$a = $i + $i++ + ++$i;echo $a; //12と書くのは正しいです。 明らかに、最初の $i は参照を渡します。次の $i++ は、実際には 3 ではなく 4 の計算に関与します
これにより、バージョンの問題により不要なエラーが発生します。ため息...
これにより、バージョンの問題により不要なエラーが発生します。ため息...そうではありません。php5 のすべてのバージョンがこのようになっていますので、問題ありません。それに、このようなコードには実質的な意味はありません
どうしても必要な場合は、 $i + $i++ を 2 * $i++ と記述してください
5 階の happypiggy2010 さんからの返信を引用: この場合、不要なバージョンの問題の間違いにつながります。ため息...そうではありません。php5 のすべてのバージョンがこのようになっていますので、問題ありません。しかも、このようなコードには実質的な意味はありません
$i = 3;$a = ($d=$i) + $i++ + ++$i;echo $a; //11
$i = 3;$a = $i + ($i + ($i+$i++));echo $i,'#',$a;//4#15,a=4+(4+(4+3))
5 階の happypiggy2010 さんからの返信を引用: この場合、バージョンの問題により不要なエラーが発生します。ため息...そうではありません。php5 のすべてのバージョンがこのようになっていますので、問題ありません。それに、そのようなコードには実際的な意味はありません
必要に応じて $i + $i++ を 2 * $i++ と書くだけです、それだけです
奥が深すぎます、ダニエル!
奥深すぎてすごい!
ちょっとかき混ぜさせてください、へへ
$i = 3;$a = $i + $i + ($i+$i++);echo $i,'#',$a;//4#14,a=3+3+(4+4))
PHP によれば
3+4+5~ Java では 3+3+5、PHP では 4+3+5 になります
引用 1 番目Floor baoying34 Reply: PHP によると、
いいえ。試してみました
$k=3;
$j=$j++ + ++$j + $ j ;
$k=++$k + $k++ + $k;
echo $i;
echo $j;... Java では 3+3+5 です