Bit-Längen
-
wie mache ich das, das mein programm die Bit-Längen aller elementaren Datentypen ausgibt...
ohne die einbindung von <stdlib.h> (also ohne printf("Short int: %hd..%hd",SHRT_MIN,SHRT_MAX); usw.)
-
Jeweils nachsehen, wann die unsigned-Version überläuft?
-
genau, aber nicht nur für die unsigned version,
für float, double, short int, long int, unsigned short, unsigned long
macht man bestimmt mit einer for schleife..
-
sizeof?
-
SeppJ schrieb:
sizeof?
Wenn man die Bytegröße kennt.
-
Erster Gedanke:
Variable auf 1 setzen
Solange mit 2 multiplizieren bis der neue Wert kleiner dem aktuellen Wert ist.Das funktioniert bei allen Ganzzahltypen (signed und unsigned)
Wenn man weiß wie viel Bits char hat, kann man auch mit sizeof() arbeiten.
-
Michael E. schrieb:
SeppJ schrieb:
sizeof?
Wenn man die Bytegröße kennt.
CHAR_BIT (aus limits.h)
printf("%lu\n", sizeof(int)*CHAR_BIT);
-
Willst du auch die Größe von Fließkommatypen ausgeben? Dann geht es natürlich nicht mit multiplizieren.
-
rüdiger schrieb:
Michael E. schrieb:
SeppJ schrieb:
sizeof?
Wenn man die Bytegröße kennt.
CHAR_BIT (aus limits.h)
printf("%lu\n", sizeof(int)*CHAR_BIT);
das klappt jetzt nur für unsigned long int oder nicht?
was ist mit den anderen :S
-
Nein, das klappt für alle. Die Größe in Bits ist natürlich ne Ganzzahl
-
%hd und Konsorten sind nur C99.
-
Michael E. schrieb:
Nein, das klappt für alle. Die Größe in Bits ist natürlich ne Ganzzahl
stimmt! dankeschööönnn
-
Wutz schrieb:
%hd und Konsorten sind nur C99.
Was meinst du? %hd ist doch short int und gibt es natürlich auch in C89.
-
Er meint den "h" modifier. Der ist, warum auch immer erst seit C99 drin, auch wenn C89 schon short kannte.