Fibonacci-Zahlenfolge



  • Incocnito schrieb:

    Laut Standard muss int mind. 16 bits und long mind. 32 bits haben. Kann also sein, dass sizeof(int) = sizeof(long). long long geht bis 64 bits. Nimm long long. Und nehme andere Variablennamen als a, b, c und d. Der Name sollte sagen, wofür die Variable steht.

    Ne. Der Standard gibt lediglich eine Ordnung vor: sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
    Die könnten auf einem konformen System auch allesamt CHAR_BIT groß sein.

    Wenn man (u)ints mit einer ganz bestimmten Größe will, so nehme man std::uint32_t und Konsorten aus <cstdint> . Das sind auch viel ausdrucksstärkere Typnamen.



  • Fytch schrieb:

    Incocnito schrieb:

    Laut Standard muss int mind. 16 bits und long mind. 32 bits haben. Kann also sein, dass sizeof(int) = sizeof(long). long long geht bis 64 bits. Nimm long long. Und nehme andere Variablennamen als a, b, c und d. Der Name sollte sagen, wofür die Variable steht.

    Ne. Der Standard gibt lediglich eine Ordnung vor: sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
    Die könnten auf einem konformen System auch allesamt CHAR_BIT groß sein.

    Wenn CHAR_BIT == 64 ist, ja.

    Der Standard gibt Mindestwertebereiche vor, die eben gewisse Wortbreiten implizieren.



  • Bashar schrieb:

    Der Standard gibt Mindestwertebereiche vor, die eben gewisse Wortbreiten implizieren.

    Kannst du sagen wo? Ich finde dazu nichts.


  • Mod

    21.4.1[cstdint.syn]/2 i.V.m. 2[Intro.refs]/1.3



  • camper schrieb:

    21.4.1[cstdint.syn]/2 i.V.m. 2[Intro.refs]/1.3

    Auch ein 8 Bit int wäre danach theoretisch immer noch standardkonform. Man würde natürlich fragen was der Blödsinn soll, wenn es doch 64 Bit Typen gibt.



  • manni66 schrieb:

    camper schrieb:

    21.4.1[cstdint.syn]/2 i.V.m. 2[Intro.refs]/1.3

    Auch ein 8 Bit int wäre danach theoretisch immer noch standardkonform.

    Äh, nein?! Genau deshalb doch die Referenz auf den C-Standard. Wie willst Du alle Integer von -32767 bis +32767 in 8 Bit unterbringen?



  • SG1 schrieb:

    manni66 schrieb:

    camper schrieb:

    21.4.1[cstdint.syn]/2 i.V.m. 2[Intro.refs]/1.3

    Auch ein 8 Bit int wäre danach theoretisch immer noch standardkonform.

    Äh, nein?! Genau deshalb doch die Referenz auf den C-Standard. Wie willst Du alle Integer von -32767 bis +32767 in 8 Bit unterbringen?

    Und wo im C Standard steht das?


  • Mod

    manni66 schrieb:

    SG1 schrieb:

    manni66 schrieb:

    camper schrieb:

    21.4.1[cstdint.syn]/2 i.V.m. 2[Intro.refs]/1.3

    Auch ein 8 Bit int wäre danach theoretisch immer noch standardkonform.

    Äh, nein?! Genau deshalb doch die Referenz auf den C-Standard. Wie willst Du alle Integer von -32767 bis +32767 in 8 Bit unterbringen?

    Und wo im C Standard steht das?

    N4659 schrieb:

    21.4.1 Header <cstdint> synopsis [cstdint.syn]
    [...]
    2
    The header defines all types and macros the same as the C standard library header <stdint.h>.
    See also: ISO C 7.20.

    Welche Version des C Standards? :

    N4659 schrieb:

    2 Normative references [intro.refs]
    [...]
    (1.3) — ISO/IEC 9899:2011, Programming languages — C



  • Doch wohl eher 21.3.5 [climits.syn] in N4700 und dann limits.h


  • Mod

    Hm, ja. Irgendwas mit ints eben 🙂


Anmelden zum Antworten