php演算子優先度タイトルセット

1984 ワード

タイトル1
$x = 2;
echo $x == 2 ? ' ' : $x == 1 ? ' ' : ' '; 

答え: 解析:1】==演算子は三目演算子より優先度が高い($x == 2) ? ' ' : $x == 1 ? ' ' : ' ' => true ? ' ' : $x == 1 ? ' ' : ' '】三目演算子は左結合性を持っています.つまり、左の三目演算(true ? ' ' : $x == 1) ? ' ' : ' ' => ' ' ? ' ' : ' 'を優先的に計算します.
タイトル2
$a = 3;
$b = 5;
if ($a = 3 || $b = 7)  {
    $a++;
    $b++;
}
echo '$a= ', $a, '$b=', $b;

答え:$a=1 $b=6解析:1】論理または‖演算子優先度比付与演算子=優先度が$a = (3 || $b = 7)高い論理または‖演算子短絡効果、左側がtrue、右側がtrue、右側が実行していない、フルfalseのみfalse $a = true $b = 5 3】増加減少はブール値に影響しない、すなわちtrue増加後もtrue、減少後もtrue、false同理$a++ => true++ => true $b++ => 5++ => 6 4]ブール値をechoで出力した後、trueは1、falseは0であるため最終結果は:a=1 b=6
タイトル3
$a = 3;
$b = 4;
if ($a = 5 && ($b = 6)) {
    $a += 1;
    $b += 1;
}
echo '$a= ', $a, '$b=', $b;

答え:$a=2 $b=7解析:1】論理と&&演算子優先度比賦値演算子=優先度が$a = 5 && ($b = 6) => $a = (5 && ($b = 6))高いかっこ内の式は$a = (5 && ($b = 6)) => $a = (5 && 6) => $a = true 3を優先的に実行する】ブール値に影響はなく、+=、-=、*=、/=などは賦値演算子に属し、ブール値は数値に変換されて$a += 1 => $a = true + 1 => $a = 1 + 1 => $a = 2 $b += 1 => $b = 6 + 1 => $b = 7を演算するので、最終結果はa=2 b=7
タイトル4
$a = null;
$b = true;
$a++;
$b++;
echo '$a= ', $a, '$b=', $b;

答え:$a=1 $b=1解析:1]増加減少はブール値に影響を及ぼさない.すなわち、true増加後もtrueであり、減少後もtrueであり、falseは同じである.しかしnullに対して増加した後、1であり、減少はnullに影響を及ぼさなかった$a++ => null++ => 1 $b++ => true++ => true」ブール値をechoで出力した後、trueは1であり、falseは0であった.null echo出力が空の場合、すなわち$a= $b=1であるため、最終結果はa=1 b=1である