• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage zu Wertebereich des Datentyp >long double<

Status
Für weitere Antworten geschlossen.

TheSubhead

Neues Mitglied
Hallo zusammen,

hab ein kleines Programm geschrieben um mir den Wertebereich des Datentyp
>long double< anzeigen zu lassen.

Das Ergebnis entspricht aber nicht dem meines Buches >C von A bis Z<.
Habe ich da vielleicht was falsch gemacht bzw. übersehen?

Hier der Programm-Code und die Ausgabe in der Konsole:
seltsam.jpg



Könnte das sein, oder eher nicht???

Würde mich über eine baldige Antwort wirklich sehr freuen!!!

Mit freundlichen Grüssen
TheSubhead
 
Werbung:
Es kann durchaus sein das die größe von der im Buch genannten abweicht. Das liegt daran das die typen in c++ keine fest definiert größe haben. DIe größe eines datentypes ist system abhängig. Mit dem Quelltext im anhang kannst du dir die größen alles typen ausgeben lassen.

> char - 1 Byte
> short - 2 Byte
> int - 2 / 4 / 8 Byte
> long int - 4 / 8 Byte
> long long int - 4 / 8 Byte

> float - 4 Byte
> double - 8 Byte
> long double - 8 / 12 Byte

Soweit mein kenntnisstand.

Anhang anzeigen limit.txt
 
Hi,

erstmals danke für die schnelle Antwort.
Das mit den 12 Byte kann schon richtig sein. Steht ja auch im Buch.

Mir ging es jetzt nun mehr um den Wertebereich.
(siehe Screenshot: 0.000000 bis -1.#QNAN0)

Mit dem >Anhang 168< tritt schon das nächste Problem auf - ist aber
halb so wild. Habe es in Visual C++ 2005 EE erstellt und gestartet - aber er will irgendwie die letzte Zeile des Codes nicht kompilieren - zeigt eine Fehlermeldung auf, das '_int64' gefolgt von Doubel nicht zulässig ist.
Schneide ich die letzte Zeile aus (cout << "> Long Long Double . . . " << sizeof(long long double) << " Byte;" << endl) geht es dann. Keine Ahnung was da falsch sein soll.

Aha - mit DEV-C++ geht >Anhang 168< problemlos - es liess sich problemlos kompilieren und starten.
Aber warum geht es da und bei Visual C++ 2005 EE nicht?
Muss ich das Visual C++ irgendwie updaten?

Hier das Ergebnis mit DEV-C++ :

Limit.jpg


Mit freundlichen Grüssen
TheSubhead


MfG
TheSubhead
 
Zuletzt bearbeitet:
Werbung:
Mir ging es jetzt nun mehr um den Wertebereich.
(siehe Screenshot: 0.000000 bis -1.#QNAN0)
Das wird wahrscheinlich nur durch printf so ausgegeben. Ich bezweifele das dieser wert wirklich exsistiert. Ich vermute mal das dadurch ein sehr kleiner wert ausgedrückt werden soll.

Mit dem >Anhang 168< tritt schon das nächste Problem auf - ist aber
halb so wild. Habe es in Visual C++ 2005 EE erstellt und gestartet - aber er will irgendwie die letzte Zeile des Codes nicht kompilieren - zeigt eine Fehlermeldung auf, das '_int64' gefolgt von Doubel nicht zulässig ist.
Schneide ich die letzte Zeile aus (cout << "> Long Long Double . . . " << sizeof(long long double) << " Byte;" << endl) geht es dann. Keine Ahnung was da falsch sein soll.
Das verstehe ich auch nicht. Liegt wahrscheinlich am compiler. Unter GCC funktioniert es einwandfrei.

Mit diesem Programm-Code zeigt er mir aber z.B. Long Double mit 8 Byte an, und überhaupt keinen Wertebereich.
Das ist schon recht komisch oder?
Ich habe auch keinen ausgeben lassen, da der wertebereich von der anzahl der nachkommastellen abhängt. Je kleiner der wert desto genauer ist die zahl. Je größer desto weniger stellen gibt es nach dem komma.
 
Hi,

wie ich schon geschrieben habe - mit DEV-C++ ging es wunderbar - ohne Probleme!!! Liegt wohl an Visual C++ - vielleicht muss ich es updaten.

Okay - alles klar dann hat sich mein Problem dank dir erledigt.
Wirklich sehr nett von dir.:-)

Mit freundlichen Grüssen
TheSubhead
 
Hey,

ich will auch noch meinen Senf dazu geben.
(siehe Screenshot: 0.000000 bis -1.#QNAN0)
ich würde auf folgendes tippen:
wertebereich = von 0 bis -1 hoch not a number (nan) => exponent ist ziemlich groß oder ziemlich klein.

und zu der sizeof geschichte:
kann sein, dass als Grundlage für das Buch ein 32Bit-Rechner verwendet wurde,
wenn du nun einen 64er hast halbieren sich die Werte. So ists zumindest bei dir.

ch habe auch keinen ausgeben lassen, da der wertebereich von der anzahl der nachkommastellen abhängt. Je kleiner der wert desto genauer ist die zahl. Je größer desto weniger stellen gibt es nach dem komma.
Fast. ;) der Wertebereich ist immer der gleiche bei int wirds immer der Bereich -32768 bis 32767 haben.
Den Speicher, den er dann tatsächlich belegt ist variabel.


lg,
n1ob
 
Werbung:
Fast. der Wertebereich ist immer der gleiche bei int wirds immer der Bereich -32768 bis 32767 haben.
Den Speicher, den er dann tatsächlich belegt ist variabel.
ICh habe ja auch von Gleitkommazahlen geredet nicht von ganzahligen Typen das deren wertebereiche festdefiniert sind weiß ich ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben