Warum gibt string::compareein intstatt eines kleineren Typs wie shortoder zurück ?char ? Nach meinem Verständnis gibt diese Methode nur -1, 0 oder 1 zurück.
Zweiter Teil, wenn ich eine Vergleichsmethode entwerfen wollte, die zwei Objekte vom Typ vergleicht Foo und nur -1, 0 oder 1 zurückgeben möchte, wäre die Verwendung shortoder im charAllgemeinen eine gute Idee?
BEARBEITEN: Ich wurde korrigiert, string::comparegibt nicht -1, 0 oder 1 zurück, sondern gibt einen Wert> 0, <0 oder 0 zurück. Danke, dass Sie mich auf dem Laufenden gehalten haben.
Die Antwort scheint grob zu sein. Es gibt keinen Grund, einen Typ zurückzugeben, der kleiner als ist int weil Rückgabewerte "rvalues" sind und diese "rvalues" nicht davon profitieren, kleiner als type int (4 Bytes) zu sein. Viele Leute wiesen auch darauf hin, dass die Register der meisten Systeme wahrscheinlich von Größe sein werdenint sowieso die werden, da diese Register gefüllt werden, unabhängig davon, ob Sie ihnen einen Wert von 1, 2 oder 4 Byte geben. Es gibt keinen wirklichen Vorteil, a zurückzugeben kleinerer Wert.
BEARBEITEN 2: Tatsächlich sieht es so aus, als ob bei Verwendung kleinerer Datentypen wie Ausrichtung, Maskierung usw. ein zusätzlicher Verarbeitungsaufwand anfällt. Der allgemeine Konsens ist, dass die kleineren Datentypen vorhanden sind, um Speicherplatz zu sparen, wenn mit vielen Daten gearbeitet wird, wie im Fall eines Arrays.
Habe heute etwas gelernt, nochmals vielen Dank Jungs!
string::compare()Sie verlinken, gibt eindeutig an, dass der Rückgabewert <0, 0 und> 0 -not- -1, 0 und 1 ist.
shortoder charanstelle von int? Die meisten Architekturen speichern den Rückgabewert einer Funktion in einem Register, und ein Wert intpasst genauso gut in ein Register wie ein shortoder char. Die Verwendung charfür numerische Typen ist immer eine schlechte Idee, insbesondere wenn Sie sicherstellen müssen, dass signierte Werte korrekt behandelt werden.
charwäre eine schlechte Idee, da die Codeprüfung für den Rückgabewert, wenn er kleiner als Null ist, auf Plattformen charohne Vorzeichen fehlschlägt .