Warning C26452
Arithmetic overflow: Left shift count is negative or greater than or equal to the operand size, which is undefined behavior (io.3)
Remarks
This warning indicates the shift count is negative, or greater than or equal to the number of bits in the shifted operand. Either case results in undefined behavior.
Warning C4293 is a similar check in the Microsoft C++ compiler.
Code analysis name: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG
Example
unsigned long long combine(unsigned lo, unsigned hi)
{
return (hi << 32) | lo; // C26252 here
}
To correct this warning, use the following code:
unsigned long long combine(unsigned lo, unsigned hi)
{
return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}
See also
26450
26451
26453
26454
ES.101: Use unsigned types for bit manipulation
ES.102: Use signed types for arithmetic
Tilbakemeldinger
https://aka.ms/ContentUserFeedback.
Kommer snart: Gjennom 2024 faser vi ut GitHub Issues som tilbakemeldingsmekanisme for innhold, og erstatter det med et nytt system for tilbakemeldinger. Hvis du vil ha mer informasjon, kan du se:Send inn og vis tilbakemelding for