C- und C ++ - Compiler generieren eine Warnung, wenn Sie signierte und nicht signierte Typen vergleichen. In Ihrem Beispielcode konnten Sie Ihre Schleifenvariable nicht ohne Vorzeichen setzen und den Compiler ohne Warnungen Code generieren lassen (vorausgesetzt, diese Warnungen waren aktiviert).
Natürlich kompilieren Sie mit Warnungen, die ganz aufgedreht sind, oder?
Und haben Sie darüber nachgedacht, mit "Warnungen als Fehler behandeln" zu kompilieren, um noch einen Schritt weiter zu gehen?
Der Nachteil bei der Verwendung von vorzeichenbehafteten Zahlen besteht darin, dass die Versuchung besteht, sie zu überladen, sodass beispielsweise die Werte 0-> n die Menüauswahl sind und -1 bedeutet, dass nichts ausgewählt ist, anstatt eine Klasse mit zwei Variablen zu erstellen, eine bis Geben Sie an, ob etwas ausgewählt ist, und ein anderes, um diese Auswahl zu speichern. Bevor Sie es wissen, testen Sie überall auf negative und der Compiler beschwert sich darüber, wie Sie die Menüauswahl mit der Anzahl Ihrer Menüoptionen vergleichen möchten - aber das ist gefährlich, weil es sich um verschiedene Typen handelt . Also tu das nicht.