Предупреждение C26452
Арифметический переполнение: число сдвигов влево отрицательно или больше или равно размеру операнда, которое является неопределенным поведением (io.3)
Замечания
Это предупреждение указывает, что число сдвигов отрицательное или больше или равно количеству битов в смещенном операнде. Любой случай приводит к неопределенному поведению.
Предупреждение C4293 аналогично проверка в компиляторе Microsoft C++.
Имя анализа кода: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG
Пример
unsigned long long combine(unsigned lo, unsigned hi)
{
return (hi << 32) | lo; // C26252 here
}
Чтобы исправить это предупреждение, используйте следующий код:
unsigned long long combine(unsigned lo, unsigned hi)
{
return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}
См. также
26450
26451
26453
26454
ES.101. Использование неподписанных типов для обработки битовых операций
ES.102: используйте подписанные типы для арифметики
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по