Sdílet prostřednictvím


Upozornění C26453

Aritmetický přetečení: Levý posun záporného znaména čísla není definováno chování (io.4)

Poznámky

Toto upozornění označuje, že kód vlevo posune celočíselnou hodnotu se záporným znaménkem, což je neportovatelné a aktivuje definované chování implementace.

Název analýzy kódu: LEFTSHIFT_NEGATIVE_SIGNED_NUMBER

Příklad

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

  // code
}

Pokud chcete toto upozornění opravit, použijte následující kód:

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

  // code
}

Viz také

26450
26451
26452
26454
ES.101: Použití nepodepsaných typů pro manipulaci s bity
ES.102: Použití podepsaných typů pro aritmetické