Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Überblick
Vergleiche zwischen Typen unterschiedlicher Breite in einer Schleifenbedingung können dazu führen, dass die Schleife nicht beendet wird.
Empfehlung
Verwenden Sie geeignete Typen in der Schleifenbedingung.
Beispiel
In diesem Beispiel kann das Ergebnis des Vergleichs zu einer Endlosschleife führen, wenn der Wert für argument: a ist größer als SHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Um den Fehler zu beheben, ändern wir den Typ für die Variable i, um die Breite von a zu entsprechen.
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Zusätzliche Details
Diese Abfrage finden Sie im Microsoft GitHub CodeQL-Repository. Details dazu, wie Windows-Treiberentwickler CodeQL herunterladen und ausführen können, finden Sie auf der Seite " CodeQL" und auf der Seite "Logotest für statische Tools ".