C Integer maximale Anzahl an Stellen Konstante?

Bender86

Lieutenant
Registriert
Jan. 2007
Beiträge
718
Moin moin,

gibt es eine Standard C Konstante, die mir die maximale Anzahl an Stellen eines Integers angibt? Also es gibt ja MAX_INT, gibt es sowas wie MAX_INT_DIGITS? Die bräuchte ich für sowas ähnliches wie

Code:
int foo = 368;
char str[MAX_INT_DIGITS];
sprintf(str, "%d", foo);

Wenn ich danach google finde ich nur ein Tutorial nach dem anderen wie man das berechnet. Das man das einfach mit Modulo berechnen kann weiß ich, gibts aber dafür eine Konstante?
 
Nicht, dass ich wüsste. Aber du kannst ja selber eine Konstante definieren.

Übrigens: Vergiss nicht das abschliessende '\0', sollte wohl eher str[MAX_INT_DIGITS + 1] sein. Und bei der Gelegenheit würde ich auch eher snprintf verwenden.
 
Da ein int unter 32bit entsprechend minimal ca. -2 Milliarden darstellen kann, würde ich von ca. 11 Stellen inkl. Vorzeichen zzgl. \0 ausgehen.
 
Ja, war nur hingeklatscht um ein Beispiel zu haben. Ok, ich dachte ich finde sie nur nicht. Danke für die Antwort.
 
Bender86 schrieb:
Wenn ich danach google finde ich nur ein Tutorial nach dem anderen wie man das berechnet. Das man das einfach mit Modulo berechnen kann weiß ich, gibts aber dafür eine Konstante?

Falls sich herausstellt, dass es keine Konstante gibt (wovon ich eigentlich ausgehe), dann berechnet man die Stellenzahl am einfachsten per Logarithmus von MAX_INT. Die Basis ist das Zahlensystem in dem du die Zahl darstellen willst, also höchstwahrscheinlich 10.
 
Du kannst sonst auch die Länge eines Variablentyps in Bytes per sizeof() (z.B. sizeof(int)) feststellen und dir das damit berechnen.
 
Freezedevil schrieb:
Falls sich herausstellt, dass es keine Konstante gibt (wovon ich eigentlich ausgehe),
natürlich gibt es die:

MAX_INT edit: bzw. INT_MAX und UINT_MAX etc.

siehe limits.h für weitere. früher waren die verschiedenen konstanten teils in anderen headers deklariert. aber geben tut es diese schon seit jahrzehnten.
 
Mir ist nicht so ganz klar was du jetzt für einen Wert benötigst. Etwa die Konstante für die maximale String Länge?
 
@ bu1137: Oh, sorry. offenbar hab ich mit so etwas so wenig gerechnet, dass in meinem kopf damit doch INT_MAX wurde.

aber danke dafür, dass du mich ohne flame darauf hingewiesen hast (keine ironie, das sieht man nicht allzuoft).
 
Fonce schrieb:
Mir ist nicht so ganz klar was du jetzt für einen Wert benötigst. Etwa die Konstante für die maximale String Länge?

Ja, je nach Größe des Ints hat dieser ja unterschiedliche Wertebereiche und wenn ich einen Int in einen String konvertieren will brauche ich dafür die Anzahl an Stellen.

Wenn ich also 32 Bit Integer mit Wertebereich −2.147.483.648 bis 2.147.483.647 (signed) habe müsste diese Konstante 11 (10 Dezimalstellen + Vorzeichen) liefern.

Aber die Frage hat sich ja schon erledigt, da es die in Standard C scheinbar nicht gibt.

(Und ich weiß wie man es berechnet, die Frage war ob es dafür eine Konstante wie MAX_INT gibt, nicht wie man es berechnet.)
 
Ah ok, aber nein sowas gibt es nicht.
 
Zurück
Oben