Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Visão geral
Comparações entre tipos de larguras diferentes em uma condição de loop podem fazer com que o loop não seja encerrado.
Recomendação
Use tipos apropriados na condição de loop.
Exemplo
Neste exemplo, o resultado da comparação pode resultar em um loop infinito se o valor para argumento: a for maior que SHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Para corrigir o bug, estamos mudando o tipo para a variável i para corresponder à largura de a:
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Detalhes Adicionais
Esta consulta pode ser encontrada no repositório Microsoft GitHub CodeQL. Consulte a página CodeQL e Teste de logotipo de ferramentas estáticas para obter detalhes sobre como os desenvolvedores de drivers do Windows podem baixar e executar o CodeQL.