awk和()运算符

时间:2011-04-25 22:40:29

标签: perl awk

我有一个像这样的awk代码:

val = and($1, 0x03FFFFFF) + $2

我写了这样的Perl版本:

$val = ($1 && 0x03FFFFFF) + $2;

这条线是否相同?

1 个答案:

答案 0 :(得分:6)

不完全 - 你想要一个&,而不是&&

$val = ($1 & 0x03FFFFFF) + $2; 

请注意,parenthesis are needed due to precedence

是正确的

更详细:

  • 您的 awk 表达式使用and()中定义的&。 “ 8.1.6 gawk的位操作功能”因此:

      

    和(v1,v2)=======返回v1和v2提供的值的按位AND。

  • 因此,在Perl中你需要一个按位“和”;不是合乎逻辑的,根据gawk manual是单个&符号:“{{1}}”