Avviso del compilatore (livello 1) C4319

'~': zero estensione 'type1' a 'type2' di dimensioni maggiori

Il risultato dell'operatore ~ (complemento bit per bit) è senza segno e quindi viene esteso zero quando viene convertito in un tipo più grande.

Esempio

Nell'esempio seguente viene ~(a - 1) valutata come espressione long senza segno a 32 bit e quindi convertita in 64 bit per estensione zero. Questo potrebbe causare risultati imprevisti per l'operazione.

// 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
}