Unary !
- логическое НЕ.Если операндом является 0
, результатом является 1
, в противном случае - 0
.Это означает, что !invPktNum
равно 0
, поэтому выражение if
истинно.
Вы, вероятно, ищете унарный ~
, который поразрядно-НЕ.
Кстати, в отладчике это может выглядеть так, как будто выполняется второй return 1;
, а не первый, потому что компилятор мог переупорядочить код и объединить эти два оператора return 1;
(особенно, если включена оптимизация).