Awk и () оператор - PullRequest
       21

Awk и () оператор

3 голосов
/ 26 апреля 2011

У меня есть код в awk, подобный этому:

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

Я написал версию Perl следующим образом:

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

Являются ли эти строки одинаковыми?

1 Ответ

6 голосов
/ 26 апреля 2011

Не совсем - вы хотите &, а не &&:

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

Обратите внимание, что вы правы в том, что скобка необходима из-за приоритета


Более подробно:

  • Ваше выражение awk использует and(), что определено в руководстве gawk ch. « 8.1.6 Функции управления битами gawk », таким образом:

    и (v1, v2) ======= Возвращает побитовое И значений, предоставленных v1 и v2.

  • Следовательно, в Perl вы хотите побитовый »и« ; не логичный, который согласно perldoc perlop представляет собой один амперсанд: "&"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...