Share via


Advertencia del compilador (nivel 3) C4334

'operator': resultado del desplazamiento de 32 bits convertido implícitamente a 64 bits (¿se esperaba un desplazamiento de 64 bits?)

El resultado del desplazamiento de 32 bits se convirtió en 64 bits y el compilador sospecha que se esperaba un desplazamiento de 64 bits. Resuelva esta advertencia mediante un desplazamiento de 64 bits. Si un desplazamiento de 32 bits es intencionado, convierta el resultado del desplazamiento en 32 bits para que sea claro para el compilador.

Ejemplo

El ejemplo siguiente genera la advertencia 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
}