Suffix(e)
-
Gugelmoser schrieb:
Der Datentyp bestimmt den Wertebereich. short int hat z.B. 2Byte, kann demnach nur 2^16 verschiedene Werte fassen.
Oha! So darfst Du das natürlich nicht formulieren. der C++ ISO Standard legt weder sizeof(short)==2 noch CHAR_BIT==8 fest. Das, was er festlegt, ist
CHAR_BIT >= 8 SCHAR_MIN <= -127 SCHAR_MAX >= 127 UCHAR_MAX >= 255, mit UCHAR_MAX == pow(2,CHAR_BIT)-1 SHRT_MIN <= -32767 SHRT_MAX >= 32767 USHRT_MAX >= 65535 INT_MIN <= -32767 INT_MAX >= 32767 UINT_MAX >= 65535 LONG_MIN <= -(2^31-1) LONG_MAX >= 2^31-1 ULONG_MAX >= 2^32-1
und dass entweder
CHAR_MIN == 0 CHAR_MAX == UCHAR_MAX
oder
CHAR_MIN == SCHAR_MIN CHAR_MAX == SCHAR_MAX
gilt.
-
314159265358979 schrieb:
krümelkacker schrieb:
Suffix 'd' für double? Gibt's doch gar nicht.
Okay, das zeigt, dass es einen Compiler gibt (gcc 4.5.1), der suffix 'd' für double akzeptiert. Womit das etwas ungenaue "gibt's doch garnicht" widerlegt wäre.
Was krümelkacker aber vermutlich meinte ist, dass der C++98/C++03-Standard das Suffix nicht definiert. Der C++0x-Draft vom 28.2. Übrigens auch nicht.2.13.3 Floating literals
*floating-literal:fractional-constant exponent-partoptfloating-suffixopt
digit-sequence exponent-part floating-suffixopt
*[...]
floating-suffix: one of
f l F L
Der ältere gcc 4.3.4 schluckt das übrigens nicht: http://ideone.com/MyMJW
-
int zahl = 12312; std::cout << zahl / 1.0f;
-
Mit der Einstellung -Wall (g++) oder /W4 (MSVC) bekommst du bei sowas wie
float foo = 1.0; double bar = 1.0f;
auch eine Warnung zwecks der Konvertierung.
-
pumuckl schrieb:
314159265358979 schrieb:
krümelkacker schrieb:
Suffix 'd' für double? Gibt's doch gar nicht.
(...)
Der ältere gcc 4.3.4 schluckt das übrigens nicht: http://ideone.com/MyMJWComeau frisst es auch nicht:
Comeau C/C++ 4.3.10.1 schrieb:
"ComeauTest.c", line 3: error: extra text after expected end of number
double d = 123.0d;