Aviso do Compilador (nível 3) C4334
'operador': resultado do deslocamento de 32 bits convertido implicitamente para 64 bits (o deslocamento de 64 bits foi pretendido?)
O resultado da mudança de 32 bits foi convertido para 64 bits, e o compilador suspeita que uma mudança de 64 bits foi pretendida. Resolva esse aviso usando um deslocamento de 64 bits. Se uma mudança de 32 bits for intencional, converta o resultado da mudança para 32 bits para deixar claro para o compilador.
Exemplo
A seguinte amostra 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
}
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários