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)