Sdílet prostřednictvím


Upozornění C26452

Aritmetický přetečení: Počet levých posunů je záporný nebo větší nebo roven velikosti operandu, což je nedefinované chování (io.3)

Poznámky

Toto upozornění označuje, že počet směn je záporný nebo větší nebo roven počtu bitů v posunutého operandu. Výsledkem obou případů je nedefinované chování.

Upozornění C4293 je podobná kontrola kompilátoru Jazyka C++.

Název analýzy kódu: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG

Příklad

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

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

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

Viz také

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