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
}