i++ の問題

WBOY
リリース: 2016-06-23 14:04:16
オリジナル
894 人が閲覧しました

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 の計算に関与します

+ ++$i を削除するとより明確になります


これにより、バージョンの問題により不要なエラーが発生します。ため息...

これにより、バージョンの問題により不要なエラーが発生します。ため息...そうではありません。php5 のすべてのバージョンがこのようになっていますので、問題ありません。それに、このようなコードには実質的な意味はありません
どうしても必要な場合は、 $i + $i++ を 2 * $i++ と記述してください

5 階の happypiggy2010 さんからの返信を引用: この場合、不要なバージョンの問題の間違いにつながります。ため息...そうではありません。php5 のすべてのバージョンがこのようになっていますので、問題ありません。しかも、このようなコードには実質的な意味はありません

必要に応じて、 $i + $i++ を 2 * $i++ と書くだけで良いようです。 PHP の計算式では、同じ変数が複数回出現すると、その値が返されます。は計算に参加する 2 番目の変数によって決まります

$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 によると、

3+4+5~



いいえ。試してみました

$i=3;

$k=3;
$j=$j++ + ++$j + $ j ;
$k=++$k + $k++ + $k;
echo $i;
echo $j;... Java では 3+3+5 です

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート