| title |
C26453 |
| description |
Describes the causes of MSVC code analysis warning C26453, and shows how to fix it. |
| ms.date |
07/15/2020 |
| ms.topic |
reference |
| f1_keywords |
|
| helpviewer_keywords |
|
| dev_langs |
|
Arithmetic overflow: Left shift of a negative signed number is undefined behavior
This warning indicates the code left shifts a negative signed integral value, which is non-portable and triggers implementation defined behavior.
void leftshift(int shiftCount)
{
const auto result = -1 << shiftCount; // C26453 reported here
// code
}
To correct this warning, use the following code:
void leftshift(int shiftCount)
{
const auto result = static_cast<unsigned>(-1) << shiftCount; // OK
// code
}
ES.102: Use signed types for arithmetic