回答
这是一个按位和 - http://perldoc.perl.org/perlop.html#Bitwise-And。 $ status2被用作位掩码,如果该位被设置,它将$ batstr2设置为'空'。
好的......当我明白它是正确的:$ status = 5比$ batstr2 =“空”......对吗? – DemonDragon
是= 5是00000101和4是00000100,按位和两个是00000100(4)或true导致设置为'空'。 – Oesor
这是使用if
作为语句修饰符。这是大致相同
if ($status & 4) {
$batstr2 = "empty";
}
和完全一样
($status & 4) and ($batstr2 = "empty");
各种结构的可作为语句修饰,其中包括:if, unless, while, until, for, when
。这些修饰符不能叠加(foo() if $bar for @baz
将不起作用),每个简单语句对于一个修饰符都是有限的。
如果设置了$ status2的第3个最低有效位,它将$ batstr2设置为“空” - 这是一个逻辑AND掩码。
已经回答了很多次,对于情况下,如果你不知道什么是按位与,这里是一个小例子:
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. 我不明白这个代码
- 3. 我不明白这jQuery代码
- 4. 我不明白这个JavaScript/jQuery代码如何执行
- 5. 我不明白我在这个编程代码
- 6. 我不明白这个小程序的结果
- 7. 我不明白的代码(简单的代码)这条线
- 8. 我不明白K&R运动这个代码示例1-12
- 9. 我不明白这个代码片段在C
- 10. 我不明白这个VHDL代码有什么问题吗?
- 11. 我不明白这个PHP代码中的输出?
- 12. 我不明白这个Java代码(位图字体)
- 13. 我不明白什么是错的这个代码
- 14. 我不明白这个bfs算法代码
- 15. 我不明白这个扩展组件内嵌代码用C
- 16. 不明白这些代码(组件)
- 17. Perl代码,我不明白输出的错误
- 18. 我不明白这段代码是如何工作的?
- 19. 我不明白这段代码是如何工作的
- 20. 我不明白这个代码做什么(代码为约塞格斯)
- 21. 我不明白这有什么错我傍XNA/C#代码
- 22. 我不明白为什么这段代码不起作用(multiprocessing.Pipe)
- 23. 我不明白为什么这段代码不工作。 (C#)
- 24. 递归:不明白这个结果
- 25. 我不明白这个说明。 (插入改编码)
- 26. 我想复制一个网页的布局,但我不明白这个代码
- 27. 如果其他错误我不明白这个错误
- 28. 使用isKindOfClass:?我不明白为什么这个代码是表现这样
- 29. 我不能明白的代码
- 30. htaccess rewrite?p =(我不明白代码)
哪个*部分*不被理解?尾部''IF'或'..'($ status2&4)位?在标题中包含细化*特定*问题的细节。 – user2864740
'$ batstr2 =($ status2&4)&&“空”',差不多。 :) –
@mpapec,这是不同的。也许你的意思是'$ batstr2 = $ status2&4? “空”:$ batstr2;'(这大致相当)。 – ikegami