Datentypen



  • Hallo,
    ich muss für eine Schulaufgabe die Datentypen bestimmen die zu den Zahlen passen.Dabei muss ich den kleinstmöglichen Datentyp angeben.Jedoch hab ich es nicht so mit denen.Hier die Werte:

    0.233566876...1 = ?
    5...33000 =unsigned int
    -5...33000 =int
    5.44...100.6 =?
    0...4x10hoch9 =? (float?)
    0...6x10hoch5 =? (float?)
    A....G =char
    5.66x10hoch40...5.66x10hoch50 =? (double?)

    wärs sehr dankbar wenn sich mal jemand eben der sache kurz annehmen könnte..danke



  • Das hängt jeweils von der jeweiligen Implementierung ab. Für 33000 wird z.B. meistens short ausreichen. Die WinAPI definiert ja abstrakte Typen - aber ich glaube nicht, dass dich die interessieren.

    Aber du könntest doch einfach deinen Compiler anwerfen und schauen, ob der jeweilige Wert in einen Typ passt...



  • Guckst du hier: http://www.datasource.de/programmierung/tab33_cppdatentypen.html Wichtig sind nur die 32 Bit Datentypen.



  • Ich raff das einfach nicht...das muss man glaube ich umrechnen ect..aber mir stehen folgende datentypen zur verfügung: float, double, long double, short, unsigned short, int, unsigned int, long und unsigned long.ich weiß nicht mal wie ich in ein programm eine zahl angebe die eine exponentialzahl hat:-(



  • secondsun@gmx.de schrieb:

    Ich raff das einfach nicht...das muss man glaube ich umrechnen ect..aber mir stehen folgende datentypen zur verfügung: float, double, long double, short, unsigned short, int, unsigned int, long und unsigned long.

    Da wäre die einfachste Lösung, sich die <limits.h> zu nehmen und die dort angegebenen Wertebereiche der Datentypen mit dem zu vegleichen, was du benötigst. (oder du schaust in die Tabelle, die mikey mitgegeben hat - die 16-Bit-Angaben entsprechen afaik den Mindestanforderungen des ANSI-Standards)

    ich weiß nicht mal wie ich in ein programm eine zahl angebe die eine exponentialzahl hat:-(

    Am besten in Exponentialdarstellung - z.b. 4*109 wird als 4e9 dargestellt.



  • CStoll schrieb:

    Da wäre die einfachste Lösung, sich die <limits.h> zu nehmen und die dort angegebenen Wertebereiche der Datentypen mit dem zu vegleichen, was du benötigst.

    vielleicht hast du in deinem include-verzeichnis eine 'stdint.h' oder 'stdtypes.h'. da sollten solche typen wie uint16_t, int32_t, usw. definiert sein...
    die zahl gibt an, wieviele bits da rein passen.
    🙂



  • pale dog schrieb:

    CStoll schrieb:

    Da wäre die einfachste Lösung, sich die <limits.h> zu nehmen und die dort angegebenen Wertebereiche der Datentypen mit dem zu vegleichen, was du benötigst.

    vielleicht hast du in deinem include-verzeichnis eine 'stdint.h' oder 'stdtypes.h'. da sollten solche typen wie uint16_t, int32_t, usw. definiert sein...
    die zahl gibt an, wieviele bits da rein passen.
    🙂

    Was will er denn damit? Es war gefagt, welcher ANSI-Datentyp ausreichend für einen bestimmten Wertebereich ist 😉



  • okay,ich habe die ganze sache schon mit ein bisschen hilfe gelöst.
    so siehts aus:
    double hat 12 stellen genauigkeit, float 6. d.h das erste wär logischerweise double (da man da ja 9 stellen hat)
    unsigned short geht von 0 bis 65535 - d.h 2te ist klar
    da bei short der + bereich nur bis 32766, muss das nächstes ein int sein
    das nächste sind nur 2 stellen genauigkeit, da reicht ein float
    4x10hoch9 ist 1.000.000.000, also würde ich unsigned int tippen,
    6x10hoch5 ebenfalls,
    char ist klar,
    und da würde ich wegen 2 stellen genauigkeit float sagen, da der exponent bei fließkommazahlen relativ wurscht ist (solang er zwischen -127 und +128 liegt 😉 ).

    (by FloSoft)


Anmelden zum Antworten