Zahl-Literale: Typ erkennen
-
Hallo zusammen,
ich habe mir zur Übung ein Buch gekauft, dass mit mit Testaufgaben etc. versorft. Nun habe ich eine Aufgabe, die mich auffordert den Typ von Konstanten herauszufinden. Nun ist es so, dass ich leider keine Ahnung hatte wie ich das lösen kann. Hier mal die Aufgabe:Bestimmen Sie den Typ der folgenden Konstanten:
2L = long 1.23456f = float //Warum nicht long double 0302 = int (oktale Konstante) '\0101 = char 100UL = unsigned long //Warum nicht long oder int== .1e-5 = double //warum nicht float 0x10 = int (hexadezimale Konstante) 1.2345678 = double 0xFL = long (hexadezimale Konstante)
Ich habe gleich mal die Lösung dahintergeschrieben. Kann mir vielleicht jemand erklären, wie man darauf kommt, denn es interessiert mich sehr. Zwar weiß ich den Unterschied zwischen int, float, long... aber beispielsweise long und int anhand von Variablen auseinanderzuhalten...das kann ich leider (noch) nicht.
Woher weiß ich, dass 0x10 int ist...kann doch auch long sein, oder?Vielen Dank für eure Hilfe
lg, freakC++
-
freakC++ schrieb:
Hallo zusammen,
ich habe mir zur Übung ein Buch gekauft, dass mit mit Testaufgaben etc. versorft. Nun habe ich eine Aufgabe, die mich auffordert den Typ von Konstanten herauszufinden. Nun ist es so, dass ich leider keine Ahnung hatte wie ich das lösen kann. Hier mal die Aufgabe:Bestimmen Sie den Typ der folgenden Konstanten:
2L = long 1.23456f = float //Warum nicht long double 0302 = int (oktale Konstante) '\0101 = char 100UL = unsigned long //Warum nicht long oder int== .1e-5 = double //warum nicht float 0x10 = int (hexadezimale Konstante) 1.2345678 = double 0xFL = long (hexadezimale Konstante)
Ich habe gleich mal die Lösung dahintergeschrieben. Kann mir vielleicht jemand erklären, wie man darauf kommt, denn es interessiert mich sehr. Zwar weiß ich den Unterschied zwischen int, float, long... aber beispielsweise long und int anhand von Variablen auseinanderzuhalten...das kann ich leider (noch) nicht.
Woher weiß ich, dass 0x10 int ist...kann doch auch long sein, oder?Vielen Dank für eure Hilfe
lg, freakC++1.23456f = float //Warum nicht long double
Weil ein kleines "f" neben der Zahl steht.
100UL = unsigned long //Warum nicht long oder int==
Weil "UL(unsigned long)" neben 100 steht.
...