PHP
$a = 100;
$b = 200;
if($a = 50 && $b = 300){
var_dump($a,$b);//$a(true)$b(int 300)
echo($a,$b);//1 300
}
逻辑符号比赋值符号优先
所以逻辑语并没有先赋值,而是先判断$a = 50是否是真,判断为真后接着判断$b = 300是否为真
当都为真时,再赋值
$b等号后为300,所以$b完成赋值为300,
$a等号后为50 && $b = 300判断语句,前者已经判断为真,所以$a = true,弱类型转换1
$a = 0;
$b = 200;
if(--$a || $b = 400){//先真短路
echo($a,$b);//-1 200
}
if($a-- || $b = 400){
echo($a,$b);//-1 400
}