Share via


Advertencia C26452

Desbordamiento aritmético: el recuento de desplazamiento a la izquierda es negativo o mayor o igual que el tamaño del operando, que es un comportamiento indefinido (io.3)

Comentarios

Esta advertencia indica que el número de desplazamientos es negativo, o bien es mayor o igual que el número de bits en el operando desplazado. Ambos casos provocan un comportamiento indefinido.

Advertencia C4293 es una comprobación similar en el compilador de Microsoft C++.

Nombre del análisis de código: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG

Ejemplo

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (hi << 32) | lo; // C26252 here
}

Para corregir esta advertencia, utilice el código siguiente:

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}

Consulte también

26450
26451
26453
26454
ES.101: Usar tipos sin firmar para la manipulación de bits
ES.102: Usar tipos con signo para la aritmética