$a = 2;
$b = 3;
if($b=1 && $a=5)
{
$a++;
$b++;
}
echo $a.'-'.$b;
$a = 2;
$b = 3;
if($a=5 and $b=1)
{
$a++;
$b++;
}
echo $a.'-'.$b;
输出6-16-2
。我不明白的1
这里。
的Perl:
$a = 2;
$b = 3;
if($b=1 && $a=5)
{
$a++;
$b++;
}
print $a.'-'.$b;
$a = 2;
$b = 3;
if($a=5 and $b=1)
{
$a++;
$b++;
}
print $a.'-'.$b;
输出6-66-2
,我不明白这里的第二6
。
任何人都知道原因?
其实我知道&&
比and
有更高的优先级,但我还是有把握的时候才知道这一点。
UPDATE
现在我明白了一个PHP,什么Perl的一个?
在Python中,它首先将错误转换为false或最后一个返回。我认为Perl的做法是一样的 – RiaD
@JeRog - 一个'&&'表达式将停止评估何时遇到一个错误的值,因此在'1 && 0 && 5'中,'0'是最后一个值。同样,'1 && undef && 5'将评估为'undef'。 – mob
@Je Rog如果左边的参数为false,则返回左边的参数;无论如何,它都会返回正确的论点。如果左参数为true,则返回它的左参数,否则返回它的正确参数。所以'&&'链返回最左边的假值(或者如果全部为真,则返回最后一个值),而一串'||'返回最左边的真值(或者最后一个值,如果全部为假)。 – hobbs