ホームページ >バックエンド開発 >PHPチュートリアル >$a = 2; $b = &$a; echo (++$a) + ($a++) ; なぜ答えは 6 ではないのか
L 由 由 この投稿は LSCXP によって最終編集されました: 2013-08-29 18:18:23 編集者
$a = 2;$b = &$a;echo (++$a) + ($a++) ;
これは 7 です
ある日、2 人が同じ質問をしました
$b = &$a;変数 a を参照型に変更する必要があります。
$a = 2;
echo (++$a) + ($a++) ;
プロセスは、
最初に $a を実行してインクリメントし、次にインクリメント後の結果 (3 を返します)
3+ ($ a++)
$a++ の結果は 3 で、その後 $a はインクリメントされますが、式の結果は 3 に返されました
したがって、出力は 3+3 、 a は 4
および
$a = 2 ;
$b = & $a;
echo (++$a) + ($a++) ;
は異なります、(++$a) は影響を受けません、
($a++) は以前とは異なります$a の値を返します。
これで、$a を指すアドレスが返されるはずです (もちろん、アドレスを通じて実際の値を取得する必要があります)
$a のアドレスを返した後、$a はインクリメントされます。 a は 4 になります。以前は $a のアドレスしか取得できませんでした。
これからはアドレス指定で値が取得されるので、結果は 4 になります
$b = &$a;変数aが参照型に変更されているはずです。
$a = 2;
プロセスは、
最初に $a を実行してインクリメントし、次にインクリメント後の結果 (3 を返します)
3+ ($ a++)
$a++ の結果は 3 で、その後 $a はインクリメントされますが、式の結果は 3 に返されました
したがって、出力は 3+3 、 a は 4
および
$a = 2 ;
$b = & $a;
echo (++$a) + ($a++) ;
は異なります、(++$a) は影響を受けません、
($a++) は以前とは異なります$a の値を返します。
これで、$a を指すアドレスが返されるはずです (もちろん、アドレスを通じて実際の値を取得する必要があります)
$a のアドレスを返した後、$a はインクリメントされます。 a は 4 になります。以前は $a のアドレスのみが取得されていましたが、
はアドレス指定を実行して値を取得するため、結果は 4 になります。結果は 3+4
$a = 2; b = &$a;
echo ($a++) + (++$a ); //結果は 6 です
これをどう説明しますか?
&$a はリンクを意味するため、3+3=6