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
}