Bjarne Stroustrups Beobachtung, dass „die Verwendung von vorzeichenlos anstelle eines int, um ein weiteres Bit zur Darstellung positiver Ganzzahlen zu gewinnen, fast nie eine gute Idee ist“ hat Bedenken hinsichtlich der Entscheidung geäußert, size_t vorzeichenlos zu machen.
Ursprünglich wurde size_t vorzeichenlos gemacht, um Architekturen mit 16-Bit-Zeigern wie DOS-Systemen gerecht zu werden. Um Einschränkungen der String-Größe zu verhindern, schreibt der C-Standard vor, dass ptrdiff_t, das vorzeichenbehaftete Gegenstück von size_t, effektiv 17 Bit groß sein muss.
Während diese historischen Gründe möglicherweise immer noch in eingebetteten Systemen gelten, Bei der modernen 32-Bit- und 64-Bit-Programmierung ist dies weniger der Fall. In diesen Umgebungen bietet die Verwendung vorzeichenloser Typen für Zahlen keine praktischen Vorteile, und ihre Verwendung kann aufgrund impliziter C/C-Konvertierungsregeln zu potenziellen Fehlern führen (z. B. wenn string("Hi").length() < -3) .
Die Entscheidung, size_t unsigniert zu machen, war kein Fehler, sondern eher eine praktische Entscheidung für die begrenzten Systeme seiner Zeit. In modernen Programmierpraktiken ist es jedoch im Allgemeinen ratsam, die Verwendung vorzeichenloser Ganzzahlen in Schnittstellen und für Zahlen zu minimieren, außer in bestimmten Fällen, in denen die selbstbeschreibende Natur von typedef int MyType von Vorteil ist.
Das obige ist der detaillierte Inhalt vonWarum ist „size_t' in C/C nicht signiert: eine historische Notwendigkeit oder ein moderner Insektenmagnet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!