Partilhar via


Aviso do compilador (nível 1) C4293

'operator': contagem de deslocamento negativa ou muito grande, comportamento indefinido

Se uma contagem de deslocamento for negativa ou muito grande, o comportamento da imagem resultante será indefinido.

Comentários

Para resolver esse problema, você pode usar uma conversão no primeiro operando para expandi-lo para o tamanho do tipo de resultado.

Exemplo

A amostra a seguir gera C4293 e mostra maneiras de corrigi-lo:

// C4293.cpp
// compile with: /c /W1
unsigned __int64 combine (unsigned lo, unsigned hi)
{
   return (hi << 32) | lo;   // C4293

   // In C, try the following line instead:
   // return ( (unsigned __int64)hi << 32) | lo;
   // In C++, try this line instead:
   // return (static_cast<unsigned __int64>(hi) << 32) | lo;
}