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.

    siehe
    http://jk-technology.com/c/inttypes.html



  • 314159265358979 schrieb:

    krümelkacker schrieb:

    Suffix 'd' für double? Gibt's doch gar nicht.

    http://ideone.com/LOnUH 😉

    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.

    http://ideone.com/LOnUH 😉

    (...)
    Der ältere gcc 4.3.4 schluckt das übrigens nicht: http://ideone.com/MyMJW

    Comeau 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;


Anmelden zum Antworten