Ich bin heute in einem Review über Code Review auf einen interessanten Punkt gestoßen . @Veedrac empfahl in dieser Antwort, dass Typen mit variabler Größe (z. B. int
und long
) durch Typen mit fester Größe wie uint64_t
und ersetzt werden uint32_t
. Zitat aus den Kommentaren dieser Antwort:
Die Größen von int und long (und damit die Werte, die sie enthalten können) sind plattformabhängig. Auf der anderen Seite ist int32_t immer 32 Bit lang. Die Verwendung von int bedeutet lediglich, dass Ihr Code auf verschiedenen Plattformen unterschiedlich funktioniert. Dies ist im Allgemeinen nicht das, was Sie wollen.
Die Argumentation hinter der Norm, die die gängigen Typen nicht festlegt , wird hier teilweise von @supercat erklärt. C wurde so geschrieben, dass es über Architekturen hinweg portierbar ist, im Gegensatz zu Assemblys, die zu dieser Zeit normalerweise für die Systemprogrammierung verwendet wurden.
Ich denke, die Designabsicht war ursprünglich, dass jeder andere Typ als int das kleinste Ding ist, das Zahlen verschiedener Größen handhaben kann, und dass int die praktischste "Allzweck" -Größe ist, die +/- 32767 handhaben kann.
Was mich angeht, habe ich int
die Alternativen immer benutzt und mich nicht wirklich darum gekümmert. Ich habe immer gedacht, dass es der Typ mit der besten Leistung ist, Ende der Geschichte. Der einzige Ort, an dem ich eine feste Breite für nützlich hielt, ist das Codieren von Daten zum Speichern oder zum Übertragen über ein Netzwerk. Ich habe selten Typen mit fester Breite in Code gesehen, der von anderen geschrieben wurde.
Bin ich in den 70ern stecken geblieben oder gibt es tatsächlich einen Grund für die Verwendung int
in der Ära von C99 und darüber hinaus?