Bjarne Stroustrups Beobachtung, dass „die Verwendung von unsigned 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 vermeiden, schreibt der C-Standard vor, dass ptrdiff_t, das vorzeichenbehaftete Gegenstück von size_t, effektiv 17 Bit groß sein muss.
Obwohl diese historischen Gründe in eingebetteten Systemen immer noch anwendbar sein können, 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()
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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3