为什么Perl认为`1和0'是真的?

时间:2013-10-11 19:34:39

标签: perl boolean

以下是样本。出于某种奇怪的原因,Perl认为1 and 0是真正的价值。为什么呢?

$ perl -e '$x = 1 and 0; print $x;'
1

3 个答案:

答案 0 :(得分:12)

因为and&&的优先级不同:

$x = 1 and 0($x = 1) and 0类似,而$x = 1 && 0$x = (1 && 0)类似。

请参阅perlop(1)

答案 1 :(得分:11)

示例中的运算符优先级为

perl -e '($x = 1) and 0; print $x;'

而你想要的是:

perl -e '$x = (1 and 0); print $x;'

perl -e '$x = 1 && 0; print $x;'

答案 2 :(得分:6)

它没有:

$ perl -e '$x = (1 and 0); print $x;'
0