Frage zu datentypen
-
hallo und einen schönen tag wünsche ich,
ich bin neu in diesem forum und hoffe das ich hier richtig mit meiner frage bin. mir währe es lieb wenn es hier auch themen für absolute anfänger geben würde so wie für mich

ich habe erst vor ein paar tagen mit c++ angefangen und habe da eine frage.
ich versuch emich gerade an verschiedenen datentypen und versuch edie zu verstehen. jetzt habe ich eine aufgabe bekommen und würde gerne um eure hilfe bitten.ich habe verschiedene wertebereiche bekommen und muß den dazugehöriegen kleinst möglichen datentypen rausfinden.
1. 0.233566876 ... 1
meine Antwort: "double"2. 5 ... 33000
meine Antwort: "unsigned short"3. -5 ... 33000
meine Antwort: "int"4. 5.44 ... 100.6
meine Antwort: "float"5. 0 ... 4 * 109
meine Antwort: "unsigned int"6. 0 ... 6 * 105
meine Antwort: "unsigned int"7. A ... G
meine Antwort: "char"8. 5.66 * 1040 ... 5.66 * 1050
meine Antwort: "double"Hoffe ihr könnt mir da helfen, ob ich mit meinen antworten richtig liege oder ob welche falsch sind und was da hinkommt.
Vielen dank im vorraus.mfg
profiler
-
bei 6. dürfte unsigned short sogar ausreichen, und bei den Gelitkomma-Werten bin ich mir nicht ganz sicher, wieweit float irgendwo ausreicht.
-
Bei 6. reicht unsigned short nicht mehr aus.
bei 8. reich float auch nicht aus.#include <iostream> #include <iomanip> #include <cmath> int main() { std::cout << std::numeric_limits<unsigned short>::max() << " < "; std::cout << 6 * pow(10, 5) << std::endl; std::cout << std::numeric_limits<float>::max() << " < "; std::cout << 5.66 * pow(10.0, 60.0) << " < "; std::cout << std::numeric_limits<double>::max() << std::endl; return 0; }Aber ist das nicht eigentlich Compiler abhängig?
mfg.
-
ich dachte es wär OS/System abhängig,
also ob 32 oder 64 bit.
-
Es ist Systemabhängig!
Es gilt: short <= int <= long
short 16 Bits
int 32 Bits (min. 16)
long 64 Bits (min. 32)Das sind aber nur typische Werte.
In der Headerdatei climits 'sieht' man das aber auch.
#include <iostream> #include <limits> // Bereichsgrenzen using namespace std; int main() { /* Max- und Min-Werte auf dem System */ cout << "SHORT: Von " << numeric_limits<short>::min() << " bis " << numeric_limits<short>::max() << endl; cout << "INT: Von " << numeric_limits<int>::min() << " bis " << numeric_limits<int>::max() << endl; cout << "DOUBLE: Von " << numeric_limits<double>::min() << " bis " << numeric_limits<double>::max() << endl; cout << "LONG: Von " << numeric_limits<long>::min() << " bis " << numeric_limits<long>::max() << endl; }
-
also ich benutze win xp 32 bit
heist jetzt das meine werte richtig sind oder habe ich da einen fehler drin.
vielen dank für die schnellen antworten.
-
meinte das wären für int 4 byte oder?
für xp32 müsste stimmen was nullbyte geschrieben hat.