Heim >Backend-Entwicklung >C++ >Warum löst der Vergleich eines int mit string::size_type eine Warnung im aktualisierten Code aus?
Die Untersuchung dreht sich um eine Warnung, die beim Vergleich von vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken im Zusammenhang mit der Bestimmung des Frame-Paddings für auftritt eine mit einem Sternchen umrandete Begrüßung.
Frage:
Warum wird eine Warnung ausgegeben, wenn im aktualisierten Programm ein int mit einem string::size_type verglichen wird, während der ursprüngliche Code Ist das Problem nicht aufgetreten?
Antwort:
Variablen als vorzeichenlos oder string::size_type zu deklarieren, wenn sie mit Größen verglichen werden, ist ratsam, um solche Warnungen zu vermeiden. Es wird empfohlen, für den Vergleich den genauen Typ zu verwenden (z. B. string::size_type beim Vergleich mit der Länge einer Zeichenfolge).
Überraschende Vergleiche:
Die Warnung ergibt sich aus dem Unterschied Bereiche von vorzeichenbehafteten und vorzeichenlosen Ganzzahlen, was zu unerwarteten Ergebnissen bei Vergleichen führt. Um Klarheit zu gewährleisten, konvertieren Sie einen Wert explizit in einen Typ, der mit dem anderen kompatibel ist, bevor Sie den Vergleich durchführen.
Beispielkonvertierung:
if (i >= 0) { if ((unsigned)i >= u) iIsGreaterThanOrEqualToU(); else iIsLessThanU(); } else { iIsNegative(); }
Weitere Erläuterung:
Ob dieses Problem später im Buch „Accelerated C“ behandelt wird, wird in der ursprünglichen Anfrage nicht explizit erwähnt.
Das obige ist der detaillierte Inhalt vonWarum löst der Vergleich eines int mit string::size_type eine Warnung im aktualisierten Code aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!