Partilhar via


Aviso do compilador (nível 3) C4334

'operador': resultado do deslocamento de 32 bits convertido implicitamente para 64 bits (foi pretendido o deslocamento de 64 bits?)

Observações

O resultado do deslocamento de 32 bits foi convertido para 64 bits, e o compilador suspeita que um deslocamento de 64 bits foi pretendido. Resolva esse aviso usando um deslocamento de 64 bits. Se um deslocamento de 32 bits for intencional, então converta o resultado do deslocamento para 32 bits para deixá-lo claro para o compilador.

Example

O exemplo a seguir gera 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
}