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