Skip to content

Latest commit

 

History

History
37 lines (29 loc) · 1.02 KB

File metadata and controls

37 lines (29 loc) · 1.02 KB
title C26452
description Describes causes of MSVC Code analysis warning C26452, and how to fix the issue.
ms.date 07/15/2020
ms.topic reference
f1_keywords
C26452
helpviewer_keywords
C26452
dev_langs
C++

Warning C26452

Arithmetic overflow: Left shift count is negative or greater than or equal to the operand size, which is undefined behavior

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. C4293 is a similar check in the Microsoft C++ compiler.

Example

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

To correct this warning, use the following code:

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

See also

ES.102: Use signed types for arithmetic