ホームページ >バックエンド開発 >PHPチュートリアル >$a = 2; $b = &$a; echo (++$a) + ($a++) ; なぜ答えは 6 ではないのか

$a = 2; $b = &$a; echo (++$a) + ($a++) ; なぜ答えは 6 ではないのか

WBOY
WBOYオリジナル
2016-06-23 14:20:452452ブラウズ

L 由 由 この投稿は LSCXP によって最終編集されました: 2013-08-29 18:18:23 編集者

PHP を引用

$a = 2;$b = &$a;echo (++$a) + ($a++) ;

これは 7 です





答えはなぜですか。行を追加すると違いますか?

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

この投稿を見てください

http://bbs.csdn.net/topics/390571704


ある日、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;

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 になります。結果は 3+4


$a = 2; b = &$a;
echo ($a++) + (++$a ); //結果は 6 です
これをどう説明しますか?


&$a はリンクを意味するため、3+3=6

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