Während der Arbeit an Übung 2-3 von „Accelerated C“ stoßen Lernende möglicherweise auf eine Warnung im Zusammenhang mit dem Vergleich vorzeichenbehafteter und vorzeichenloser Zahlen vorzeichenlose Ganzzahlausdrücke. Diese Warnung tritt auf, wenn eine Ganzzahl (int) zum Vergleich mit einem string::size_type verwendet wird.
Ganzzahlen in C können entweder vorzeichenbehaftet oder vorzeichenlos sein. Vorzeichenbehaftete Ganzzahlen haben einen Wertebereich von -2^(n-1) bis 2^(n-1) - 1, wobei n die Anzahl der Bits ist, die die Ganzzahl darstellen. Ganzzahlen ohne Vorzeichen haben dagegen einen Bereich von 0 bis 2^n - 1.
Die Warnung im angegebenen Code tritt auf, weil die Variable r eine ist int, das signiert ist, während padtopbottom ebenfalls ein int ist. Allerdings ist c ein string::size_type, der auf den meisten Plattformen ohne Vorzeichen ist. Beim Vergleich vorzeichenbehafteter und vorzeichenloser Ganzzahlen warnt der Compiler, um auf das Potenzial für unerwartetes Verhalten aufgrund der unterschiedlichen Wertebereiche hinzuweisen.
Um solche Warnungen und potenzielle Probleme zu vermeiden, ist dies der Fall Empfohlen für:
Der bereitgestellte Code enthält nicht den Code aus dem Beispielprogramm in „Accelerated C“. Es ist möglich, dass das ursprüngliche Programm const int zum Auffüllen verwendet hat, da bekannt war, dass die Werte positiv sein würden und const der Übersichtlichkeit halber verwendet wurde. Bei Verwendung von Benutzereingaben ist es jedoch wichtig, Variablen als unsigned oder size_t zu deklarieren, um die oben genannte Warnung zu vermeiden. Spätere Kapitel im Buch können weitere Einblicke in den angemessenen Umgang mit solchen Vergleichen liefern.
Das obige ist der detaillierte Inhalt vonWarum löst der Vergleich von vorzeichenbehafteten und vorzeichenlosen Ganzzahlen in C eine Warnung aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!