Avertissement du compilateur (niveau 1) C4319
'~' : zéro extension 'type1' à 'type2' de taille supérieure
Le résultat de l’opérateur ~ (complément au niveau du bit) n’est pas signé, puis étendu zéro lorsqu’il est converti en type plus grand.
Exemple
Dans l’exemple suivant, ~(a - 1)
est évalué comme une expression longue non signée 32 bits, puis convertie en 64 bits par extension zéro. Cela peut entraîner des résultats d'opération inattendus.
// 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
}