ホームページ >バックエンド開発 >PHPチュートリアル >++ と & について少し疑問があります

++ と & について少し疑問があります

WBOY
WBOYオリジナル
2016-06-23 13:45:131029ブラウズ

$a=1;
$b=$a++;

//Find $a, $b
2 番目の文は、b もアドレスを指すことを意味します。 3 番目の文は、使用後に a の値が 1 増加することを意味するため、$b=1 になります。 重要なのは、後の $a++ が理解できないということです。これは、使用後に 1 増加することを意味するものではありません。 $a=2;
しかし、$b のアドレスは a のアドレスと同じなので、$b も 2 に等しいということではないでしょうか?それとも、3 番目の文の後の $a++ はまったく実行されないのでしょうか?この質問の答えは $a と $b は両方とも 1 です
たとえば、これと比較してください
$a=1;
これは $ ではありませんか? b=1、$a=2
少しめまいがします。 。 。



ディスカッションへの返信 (解決策)

$a=1;

結果:
$b = 1

$a = 2; に $b = & を追加すると真ん中の $a は、$a $b が同じアドレスを指すことを意味します

$b が変更されると、$a の値も変更され、最終的に $b = 1,$a = 1 になります




$a = 1;$b = $a++;var_dump($a, $b);/*int(2)int(1)*/$a = 1;$b = &$a;$a++;var_dump($a, $b);/*int(2)int(2)*/$a = 1;$b = &$a;$b = $a++;var_dump($a, $b);/*int(1)int(1)*/

for $b = $a++;
$a の値 1 を取り出して $b に代入しますが、++ の優先順位が = よりも高いため、値を取り出した後、最初に代入を行わずに ++ を行います。 , したがって、$a の値は 2 です ($b は $a 参照であるため、この時点の $b の値も 2 です)
次に代入演算を実行すると、$b の値は 1 に等しくなります
$ であるためb は $a の参照なので、$a は 1 に戻ります

基本 うまく入力できませんでした~ モデレーター、ありがとう、理解しました!

演算子の優先順位が分からない場合は、こうすれば理解できます!

<?php$a=1;$b=&$a; //相当于告诉你 a、b指向同一地址!$c=$a++; //先把a的当前值赋给c 之后 a自加1$b=$c;

グラフで表すと、a b は同じ引き出しの中にリンゴが何個あるかを表します。シャオミンは、a が入っている引き出しを見て、その引き出しの中にリンゴが何個あるか (つまり、a はいくらか) を覚えてから、もう 1 個のリンゴを引き出しに入れる責任があります。次に、b が入っている引き出しの中のリンゴの数を、先ほど覚えたリンゴの数 (a の値) に変更します。だから変化し続けてください!またまたAに戻りました!

最初のケース、参照なし
$a=1;$b=$a; // 这时 b=1 a=1$b=$a++; // a先赋值给b,然后再自增 b=1 a=2echo $a;echo $b;

2 番目のケース、参照

$a=1;$b=&$a; // b引用a,就是a,b是指向同一内存地址$b=$a++; // a 把值读出后执行自增,a=2 b=2,然后再把值赋值给b,所以b=1 a=1echo $a;echo $b;

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。