long 32 Bit?



  • Hallo,
    sehe ich das richtig, dass long unabhängig vom Compiler, und vom System immer 32 Bit lang ist?



  • long schrieb:

    sehe ich das richtig, dass long unabhängig vom Compiler, und vom System immer 32 Bit lang ist?

    Nein. Aber unter einem 32-Bit-System ist hat int 32 Bits, und da der Typ long mindestens so gross sein muss wie int , besitzt er mindestens 32 Bits.

    C++-Standard, §3.9.1/2 schrieb:

    There are four signed integer types: “signed char”, “short int”, “int”, and “long int.” In this list, each type provides at least as much storage as those preceding it in the list. Plain ints have the natural size suggested by the architecture of the execution environment ; the other signed integer types are provided to meet special needs.


  • Mod

    Der Typ long ist mindestens 32 Bit lang auf jedem System, ist häufig aber länger. Das geht aus den Standard-Mindestanforderungen an die Konstanten in der climits hervor.



  • Auf manchen DSPs (Texas Instruments C64x, Analog Devices Blackfin) ist long 5 byte groß, also 40 Bit, um die Ergebnisse der Multiply-Accumulate Befehle zu speichern...



  • SeppJ schrieb:

    Das geht aus den Standard-Mindestanforderungen an die Konstanten in der climits hervor.

    wo im standard werden an die konstanten mindestanforderungen (abseits der größenreihenfolge) gestellt?

    ru,
    cirion


  • Mod

    cirion schrieb:

    SeppJ schrieb:

    Das geht aus den Standard-Mindestanforderungen an die Konstanten in der climits hervor.

    wo im standard werden an die konstanten mindestanforderungen (abseits der größenreihenfolge) gestellt?

    ru,
    cirion

    Ja, das ist reichlich indirekt, daher schwer zu finden: In der Beschreibung der climits steht, dass auch alle Makros aus dem limits.h Header gemäß dem C89-Standard übernommen werden. Und dieser wiederum legt eine Mindestgröße für LONG_MAX und LONG_MIN fest. Und daraus geht dann die Mindestgröße des Long-Datentyps hervor.

    Ja, das hätte man sicherlich geschickter formulieren können.





  • SeppJ schrieb:

    Ja, das ist reichlich indirekt, daher schwer zu finden: In der Beschreibung der climits steht, dass auch alle Makros aus dem limits.h Header gemäß dem C89-Standard übernommen werden.

    danke für die info. macht doch sinn, das vermeintlich unwichtige "kleingedruckte" nicht zu überlesen 😉

    ru,
    cirion


Anmelden zum Antworten