Поделиться через


Предупреждение компилятора (уровень 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
}