Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 1) C4319

'~': zero rozszerzające "type1" na "type2" o większym rozmiarze

Wynik ~ operatora (uzupełniania bitowego) jest niepodpisany, a następnie rozszerzony zero po przekonwertowaniu na większy typ.

Przykład

W poniższym przykładzie jest obliczana jako 32-bitowe wyrażenie długie bez znaku, ~(a - 1) a następnie konwertowane na 64 bity przez rozszerzenie zerowe. Może to prowadzić do nieoczekiwanych wyników operacji.

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