php 关于运算优先级。if($abc==3 && $bcd=4) 这一句,是先运算过程是怎么样。

来源:百度知道 编辑:UC知道 时间:2024/05/30 13:59:30
<?php
$abc=3;
if($abc==3 && $bcd=4) //请解释一下这一行的意思。
{
print $bcd;
}
?>
//我从手册上查到运算优先级从高到低是:先==,再&&,再=。$bcd是先和前面运算还是先赋值?
// 我又改为 if($abc==3 && $bcd=0) 则不输出了。即if判断为假了。

首先说明&&的用法,且的意思,当且仅当前后连个语句都为真时,返回true
也就是说,如果第一个条件为假,不进行第二个语句的判断或执行
如果第一个条件为真,则进行第二个语句的判断或执行
更简单的语句,如
<?php
$abc=3;
$abc==3&&$bcd=4
print $bcd;
?>
这个效果是一样的!
在你这个例子里$abc == 3为真,则执行语句 $bcd = 4;将4赋值给变量$bcd
这个if语句块等价于如下语句
if($abc==3&&4)
{
$bcd = 4;
print $bcd;
}

先计算$abc==3,因为==比&&,=优先级都高 因为$abc==3成立所以等价于
if(1&&$bcd=4),先计算$bcd=4也就是赋值,然后将值作为&&的第二个条件,等价于
if(1&&4)这个是明显成立的,执行里面的语句 print $bcd输出4
如果你将$bcd=0则等价于
if(1&&0)这个是不成立的,如果有else则执行else里面的语句
if($abc==3&&$bcd=0)
{
print $bcd;
}
else
{
print $bcd;//在这里将输出0
}

.....明显的低级错误啊???
$bcd=4 这是赋值了呀?

如果没写错,顺序应应该是从左至右执行

<?php
$abc=3;
$bcd=4;
if($abc==3 && $bcd==4) //请解释一下这一行的意思。
{
print $bcd;
}
?>
先两个逻辑判断,为真,再&&,1&&1值为1,if 成立,输出$bcd;

if($abc==3 && $bcd=4) //请解释一下这一行的意思。
本身&&应该是且的意思,但你这里后面是赋值运算, &&也就