Aviso C26453

Estouro aritmético: o deslocamento para a esquerda de um número com sinal negativo é um comportamento indefinido (io.4)

Comentários

Esse aviso indica que o código desloca para a esquerda um valor integral com sinal negativo, que não é portátil e dispara o comportamento definido pela implementação.

Nome da análise de código: LEFTSHIFT_NEGATIVE_SIGNED_NUMBER

Exemplo

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

  // code
}

Para corrigir esse aviso, use o seguinte código:

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

  // code
}

Confira também

C26450
C26451
C26452
C26454
ES.101: Usar tipos não assinados para manipulação de bits
ES.102: usar tipos assinados para aritmética