Bei meinem Code verwende ich nicht int oder unsigned int. Ich verwende nur size_t oder ssize_t für portable. Zum Beispiel:sollte size_t oder ssize_t verwenden
typedef size_t intc; // (instead of unsigned int)
typedef ssize_t uintc; // (instead of int)
Da strlen
, string
, vector
... alle size_t
verwenden, so in der Regel ich size_t
verwenden. Und ich verwende nur ssize_t
, wenn es negativ sein kann.
Aber ich finde, dass:
Der unsigned Integer-Typ für Anwendungen ideal ist, die Speicherung als Bit-Array zu behandeln. Die Verwendung von unsigned anstelle von int, um ein weiteres Bit zu erhalten, um positive ganze Zahlen darzustellen, ist fast nie eine gute Idee. Versuche, sicherzustellen, dass einige Werte positiv sind, indem sie Variablen ohne Vorzeichen deklarieren, werden normalerweise durch die impliziten Konvertierungsregeln besiegt.
in dem Buch The C++ Programming Language.
So bin ich verwirrt. Liege ich falsch? Warum hält sich die STL nicht an den Vorschlag auf dem Buch?
'size_t' in Standart-Bibliothek für die Darstellung von Größen verwendet. Es wäre seltsam, wenn die Größe des Containers negativ sein könnte. Die Schnittstelle gibt ihr Verhalten an. Ich denke, dass Buch alltägliche Verwendung annimmt, nicht Schnittstelle – kassak
@kassak - Nein, in diesem Fall wird ein vorzeichenloser Typ tatsächlich * verwendet, um ein zusätzliches Bit für den Wert zu erhalten. Einige Mitglieder des Ausschusses sahen es wichtig, einen 'std :: vector' größer als die Hälfte des verfügbaren Speichers zu haben. Und das Zitat sagt "* fast * nie" ... –
@Bo Persson, danke, C++ lib benutze size_t für den Bereich. Aber es hat uns die Probleme gebracht. Wenn wir int verwenden, müssen wir vorsichtig sein, sie zu vergleichen. – hgyxbll