有人能解释一下这个简短的珍珠码?
$batstr2 = "empty" if( $status2 & 4 );
if语句怎么说?
答案 0 :(得分:3)
已经多次回答,如果你不知道什么是Bitwise,那么这里有一个小例子:
perl -e 'print "dec\t bin\t&4\n";printf "%d\t%8b\t%-8b\n", $_, $_, ($_ & 4) for (0..8);'
打印:
dec bin &4
0 0 0
1 1 0
2 10 0
3 11 0
4 100 100
5 101 100
6 110 100
7 111 100
8 1000 0
如您所见,当右边的3rb位为1时,$num & 4
为真。
答案 1 :(得分:2)
那是使用if
作为语句修饰符。它与
if ($status & 4) {
$batstr2 = "empty";
}
与
完全相同($status & 4) and ($batstr2 = "empty");
各种构造可用作语句修饰符,包括:if, unless, while, until, for, when
。这些修饰符不能堆叠(foo() if $bar for @baz
不起作用),每个简单语句限制一个修饰符。
答案 2 :(得分:1)
这是一个按位而且 - http://perldoc.perl.org/perlop.html#Bitwise-And。 $ status2被用作位掩码,如果该位被设置,它将$ batstr2设置为'empty'。
答案 3 :(得分:0)
如果设置了$ status2的第3个最低有效位,它会将$ batstr2设置为“空” - 它是一个逻辑AND掩码。