Udostępnij za pomocą


Ostrzeżenie kompilatora (poziom 3) C4334

"operator": wynik 32-bitowej zmiany niejawnie przekonwertowany na 64 bity (czy 64-bitowa zmiana ma być przeznaczona?)

Uwagi

Wynik 32-bitowej zmiany został przekonwertowany na 64-bitowy, a kompilator podejrzewa, że 64-bitowa zmiana była przeznaczona. Rozwiąż to ostrzeżenie przy użyciu 64-bitowej zmiany. Jeśli 32-bitowa zmiana jest celowa, rzutuj wynik przesunięcia na 32-bitowy, aby wyjaśnić kompilatorowi.

Przykład

Poniższy przykład generuje kod C4334.

// C4334.cpp
// compile with: /W3 /c
void SetBit(unsigned __int64 *p, int i) {
   *p |= (1 << i); // C4334, 32-bit shift cast to 64-bit
   *p |= (1i64 << i); // OK, 64-bit shift
   *p |= static_cast<int>(1 << i); // OK, 32-bit shift saved to 64-bit result
   *p |= static_cast<__int64>(1) << i; // OK, 64-bit shift
}