Compartir a través de


Advertencia del compilador (nivel 1) C4293

"operator": recuento de desplazamientos negativo o demasiado grande; comportamiento impredecible

Si un recuento de desplazamientos es negativo o demasiado grande, el comportamiento de la imagen resultante está sin definir.

Comentarios

Para resolver este problema, puede usar una conversión en el primer operando para expandirlo al tamaño del tipo de resultado.

Ejemplo

El ejemplo siguiente genera la advertencia C4293 y muestra cómo corregirla:

// 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;
}