PHP中运算符优先级面试题

(1)

if($a = (100 && $b = 200) ){
        var_dump($a);
        var_dump($b);
    }
if($a = (100 && 200) ){
        var_dump($a);
        var_dump($b);
    }
if($a = true ){
        var_dump($a);
        var_dump($b);
    }

解析:
1.&& 优先于= 
2.&& 具有短路作用,它在运行的时候先计算左值,如果左值为ture,再计算右值。如果左值为false,则不计算右值
3.100表示true,需要计算右值,200赋值给b, 100 && 200 结果为true; 最后赋值给a;
输出结果:
bool(true)
int(200)

练习题:

 if($a = 100 && $b = false ){
        var_dump($a);
        var_dump($b);
    }

    var_dump($a);
    var_dump($b);
 

输出:
bool(false)
bool(false)

(2)

 $a = 3;
    $b = 5;
    if ($a = 5 || $b = 7) {
        var_dump($a);
        var_dump($b);
        $a++; 
        $b++; 
        var_dump($a);
        var_dump($b);
    }

解析:
1.|| 同样具有短路功能 当左侧的值为true是,右边的表达式是不运行的。
如题,b=7不运行,表达式可以化简为 a = true。
$a ++ 输出 ture ++ 还是 true;

输出结果:
bool(true)
int(5)
bool(true)
int(6)

练习题:

$a = 3;
    $b = 5;
    if ($a =  '0' || $b = 7) {
        var_dump($a);
        var_dump($b);
        $a++; 
        $b++; 
        var_dump($a);
        var_dump($b);
    }

输出
bool(true)
int(7)
bool(true)
int(8)

你可能感兴趣的:(PHP中运算符优先级面试题)