我正在尝试锻炼子网掩码和邻居IP地址。当使用AND来查找网络ID时,我得到了奇怪的结果。
为什么这不正确,我怎样才能成真呢?
if ( ~252&255 == 3 ) {print "hello\n";}
我也试过,但我有同样的问题
if ( ~252&255 == 0x11 ) {print "hello\n";}
答案 0 :(得分:10)
这是一个优先问题。
~252&255 == 3
装置
(~252) & (255 == 3)
但你想要
((~252) & 255) == 3
比较运算符(例如==
)的优先级高于中缀位运算符(例如&
),但Perl选择遵循C的优先级规则,这是不直观的。
从C借来的运算符保持相同的优先关系,即使C的优先级稍微有点棘手。 (这使得学习Perl对于C人来说更容易。)
答案 1 :(得分:2)
Array.prototype