Share via


Advertencia C26453

Desbordamiento aritmético: el desplazamiento izquierdo de un número con signo negativo es un comportamiento indefinido (io.4)

Comentarios

Esta advertencia indica que el código a la izquierda desplaza un valor entero con signo negativo, que no esportable y desencadena el comportamiento definido por la implementación.

Nombre del análisis de código: LEFTSHIFT_NEGATIVE_SIGNED_NUMBER

Ejemplo

void leftshift(int shiftCount)
{
  const auto result = -1 << shiftCount;  // C26453 reported here

  // code
}

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

void leftshift(int shiftCount)
{
  const auto result = ~0u << shiftCount; // OK

  // code
}

Consulte también

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