Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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 ".