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é