Grösst mögliche variable?
-
long double ist sehr lang und sollte bei den meisten Implementierungen der längste Typ sein.
long long ist übrigens (noch?) kein Standard C++ und kommt von C99.
#include <iostream> int main() { std::cout << "char: " << sizeof(char) << "\nshort: " << sizeof(short) << "\nint: " << sizeof(int) << "\nlong: " << sizeof(long) << "\nlong long: " << sizeof(long long) << "\n\nfloat: " << sizeof(float) << "\ndouble: " << sizeof(double) << "\nlong double: " << sizeof(long double) << "\n\nbool: " << sizeof(bool) << "\nwchar_t: " << sizeof(wchar_t) << '\n'; }
die Angaben hängen vom Compiler/Platform ab. Bei mir (Linux/IA32/GCC 3.3.4):
char: 1 short: 2 int: 4 long: 4 long long: 8 float: 4 double: 8 long double: 12 bool: 1 wchar_t: 4
-
Ich weiss nicht wozu, du die Variable brauchst.
Um zB. in sehr grosse Dateien Offsets anspringen, und die auslesen reicht double.
Willst du zB. nur Flieskommazahlen berechen float.
Edit:
Sorry haben sich wohl post überschnitten
-
Um zB. in sehr grosse Dateien Offsets anspringen, und die auslesen reicht double.
Äh, wenn man wirklich mit großen Dateien arbeiten muss, dann nimmt man für die Offsets einen 64Bit Typ (long long) und kein double.
-
Also ich nimm double nur, um zB. dateigrössen oder so abzufragen.
Und da reichte das immer aus.
Auch sonst reichte double aber das es long long gibt wusste ich nicht.
Wo liegt denn in long long der Vorteil gegenüber double?
Vielleicht finde ich ja long long ja auch besser.
-
long long gibt es wie ich bereits gesagt habe nicht im C++ Standard.
Aber der Vorteil ist, dass es sich um einen Integral Typ handelt und nicht um einen Floatingpoint Typ
Und wenn du mit großen Dateien arbeitest, wird dir die Library sicher einen Offset Typ anbieten, der passend ist.
-
Also wenn ich mit seekp oder tellp arbeite nimm ich immer, double und hatte keine probleme.
-
Das nützt dir aber nichts, weil seekp und tellp selbst nicht mit double arbeiten, sondern mit streambuf::pos_type (was wohl ein typedef auf unsigned int oder dergleichen ist).
-
Dateien bis 2,1 GB oder so klappt das.
-
Zufällig entspricht das genau dem Wertebereich einer vorzeichenbehafteten 32bit-Zahl.
-
@kingruedi: wchar_t hat bei dir 4 Byte? Haben die nicht auf 32bit-Rechnern 2 Byte?
MfG SideWinder
-
SideWinder schrieb:
@kingruedi: wchar_t hat bei dir 4 Byte? Haben die nicht auf 32bit-Rechnern 2 Byte?
verwechselst du das mit WCHAR aus der Winapi?