6

这是示例。出于某种奇怪的原因,Perl 认为这1 and 0是一个真正的价值。为什么?

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

3 回答 3

12

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

$x = 1 and 0是喜欢($x = 1) and 0,而是$x = 1 && 0喜欢$x = (1 && 0)

参见perlop(1)

于 2013-10-11T19:38:05.047 回答
11

您的示例中的运算符优先级是

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

而你想要的是:

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

或者

perl -e '$x = 1 && 0; print $x;'
于 2013-10-11T19:35:55.887 回答
6

它没有:

$ perl -e '$x = (1 and 0); print $x;'
0
于 2013-10-11T19:41:42.503 回答