Aus ISO/IEC 9899:Wofür sind die Integer-Typen der minimalen Breite nützlich?
7.18.1.2 Mindestbreiten-Integer-Typ
1 Der typedef Name int_leastN_t bezeichnet einen vorzeichenbehaftete Ganzzahl-Typen mit einer Breite von zumindest N, so dass keine Ganzzahl mit Vorzeichen Typ mit geringerer Größe hat mindestens die angegebene Breite. Daher bezeichnet int_least32_t einen vorzeichenbehafteten Integer-Typ mit einer Breite von mindestens 32 Bit.
Warum sollte ich jemals diese Typen verwenden?
Wenn ich entscheide, welchen Typ ich für eine Variable brauche, die ich brauche, dann frage ich mich: "Was wird der größte Wert sein, den es jemals tragen könnte?"
Also werde ich eine Antwort finden, überprüfen Sie, was ist die niedrigste 2 n, die größer ist als das, und nehmen Sie die passende genaue Integer-Typ.
Also könnte ich in diesem Fall auch einen Integer-Typ mit minimaler Breite verwenden. Aber warum? Wie ich bereits weiß: Es wird niemals ein größerer Wert sein. Warum also etwas nehmen, das manchmal noch mehr abdecken könnte, als ich brauche?
alle anderen Fälle I, wo sogar ungültig wie zB imagin kann:
„Ich habe eine Art, die mindestens eine Größe von ... sein“ - Die implmentation kann nicht wissen, was die größten sein wird (Zum Beispiel) Benutzereingaben werde ich jemals bekommen, so dass die Anpassung des Typs zur Kompilierzeit nicht hilft.
"Ich habe eine Variable, bei der ich nicht bestimmen kann, welche Größe der Werte die Laufzeit hält."
-So, wie der Compiler zur Kompilierzeit wissen kann? -> Es kann auch nicht die passende Byte-Größe finden.
Also was ist die Verwendung dieser Typen?
Upvote zum Bearbeiten. Ich wusste nicht, dass "intN_t" -Typen tatsächlich in Software emuliert werden können, wenn sie nicht anderweitig verfügbar sind. – user694733
@Jens und warum sollte ich int_least32_t anstelle von int_fast32_t für diesen Zweck verwenden? – dhein
@Zaibis Weil Platzeffizienz statt Geschwindigkeit Ihre Priorität sein könnte. – Jens