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.

    ...


Anmelden zum Antworten