Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
Сравнения между типами разных ширин в условии цикла могут привести к сбою цикла.
Рекомендация
Используйте соответствующие типы в условии цикла.
Пример
В этом примере результат сравнения может привести к бесконечному циклу, если значение аргумента a больше, чем SHRT_MAX.
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Чтобы устранить ошибку, мы изменим тип переменной i, чтобы она соответствовала ширине:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Дополнительные сведения
Этот запрос можно найти в репозитории Microsoft GitHub CodeQL. Подробности о том, как разработчики драйверов Windows могут скачать и запустить CodeQL, см. на странице CodeQL and the Static Tools Logo Test.