今日遭遇した面接の質問、10 件中 9 件の間違いが面接で行われました この投稿は vcshellcode によって最終編集されました: 2013-10-14 11:49:39 d5f32b9c0e0b4f343493862053e8dab4"; $d = 1; $c = $d $d ; echo $c //出力 3 ?> ほとんどの人の答え: $b=5; //間違っています $c=3; 2 つの結果が同じである理由を知っている人はいますか? 共有先: -----解決策--------------------------------以前にもそのような投稿があり、その時は少し混乱しました。公式マニュアルでは「演算子の結合方向」がどのように現れるかが考察されています。 ------解決策----------------------C の動作がよくわかりません。私自身の説明は次のとおりです: $a = 1; $b = $a $a $a ;//PHP は最初に $a $a を計算し ($a の方が優先度が高いですが)、最終的に 3 を取得しました。 $d = 1; $c = $d $d //PHP は最初に $d を計算し、次に $d を計算します これが正しい理解方法かどうかはわかりません。 -----解決策--------- 引用: C がどのように動作するのかよくわかりません。私自身の説明は次のとおりです: $a = 1; $b = $a $a $a ;//PHP は最初に $a $a を計算し ($a の方が優先度が高いですが)、最終的に 3 を取得しました。 $d = 1; $c = $d $d //PHP は最初に $d を計算し、次に $d を計算します これが正しい理解かどうかはわかりません。 実際、括弧を追加すると優先順位がより明確になります。 ------解決策--------- ($a + $a++); //由执行顺序 //1、$a++ //2、$a //再由 $a = 1; $b = $a++; echo($a.'-'.$b); //结果$a为2, $b为1 即($a++)结果为1; //所以$a + $a++ = 2+1 为3 //式1 $b = $a + ($a + ($a + ($a + $a++))); //执行顺序 //1、($a + $a++) //2、($a + ($a + $a++)) //...括号优先 //因为1先被执行,所以$a变量值被改变了,后面的顺序执行都会按改变的值计算 //结果:$b = 2 + (2 + (2 + (2 + 1))); //式2 $b = $a + $a + $a + ($a + $a++); //等同于$b = (($a + $a) + $a) + ($a + $a++); //执行顺序 //1、($a + $a) //2、($a + $a) + $a) //......括号优先,相同符号 不加括号顺序执行 //执行结果为$b = 1+1+1+($a + $a++) 即$b=3+(2+1) //最后 $b = $a+$a++;//等同 式1 $b = $a+$a+$a++;//等同 式2