Compilerwarnung (Ebene 1) C4319
'~' : Null, die 'type1' auf 'type2' von größerer Größe erweitert
Das Ergebnis des ~ Operators (bitweise Ergänzung) ist nicht signiert und wird dann null erweitert, wenn er in einen größeren Typ konvertiert wird.
Beispiel
Im folgenden Beispiel ~(a - 1)
wird als nicht signierter langer 32-Bit-Ausdruck ausgewertet und dann durch Nullerweiterung in 64 Bit konvertiert. Dies kann zu unerwarteten Vorgangsergebnisse führen.
// 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
}