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
}