Предупреждение компилятора (уровень 1) C4319
"~" : ноль расширения "type1" до "type2" больше размера
Результат оператора (битового ~ дополнения) без знака, а затем ноль-расширенный при преобразовании в более крупный тип.
Пример
В следующем примере ~(a - 1)
вычисляется как 32-разрядное длинное выражение без знака, а затем преобразуется в 64 бита по нулю расширения. Это может привести к непредвиденному результату операции.
// 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
}