Heim  >  Artikel  >  Backend-Entwicklung  >  Warum löst der Vergleich eines int mit string::size_type eine Warnung im aktualisierten Code aus?

Warum löst der Vergleich eines int mit string::size_type eine Warnung im aktualisierten Code aus?

Linda Hamilton
Linda HamiltonOriginal
2024-11-07 03:39:02553Durchsuche

Why does comparing an int to string::size_type trigger a warning in the updated code?

Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken: Eine Warnung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn