Aviso do compilador (nível 1) C4319

'~' : zero estendendo 'type1' para 'type2' de maior tamanho

O resultado do operador ~ (complemento bit a bit) é sem sinal e, em seguida, estendido com zeros quando ele é convertido em um tipo maior.

Exemplo

No exemplo a seguir, ~(a - 1) é avaliada como uma expressão long sem sinal de 32 bits e convertida em 64 bits por extensão com zeros. Isso pode levar a resultados de operação inesperados.

// C4319.cpp
// compile with: cl /W4 C4319.cpp
int main() {
   unsigned long a = 0;
   unsigned long long q = 42;
   q = q & ~(a - 1);    // C4319 expected
}