Compartir vía


Advertencia del compilador (nivel 1) C4319

"~": cero para extender "type1" a "type2" de tamaño mayor

Al resultado del operador ~ (complemento bit a bit) se le quita el signo y, a continuación, se completa con ceros cuando se convierte en un tipo mayor.

Ejemplo

En el ejemplo siguiente, ~(a - 1) se evalúa como una expresión de tipo long sin signo de 32 bits y, a continuación, se convierte a 64 bits mediante extensión con ceros. Esto podría producir resultados de operación 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
}