uint8_t oder short unsigned int ?



  • quarkmalwiederleider schrieb:

    hustbaer schrieb:

    Swordfish schrieb:

    Ein (unsigned) short und ein (unsigned) int ist mindestens 2 Byte lang.
    Ein (unsigned) long ist mindestens 4 Bytes lang.
    Ein (unsigned) long long ist mindestens 8 Bytes lang.

    Alles falsch.
    Wie kommst du auf die Idee?

    Wie kommst du auf die Idee, dass das von Swordfisch falsch sein könnte?

    Siehe meinen Nachtrag.


  • Mod

    Das Ergebnis von sizeof hat also nicht zwangsläufig etwas mit der echten Größe des Typen zu tun.

    Doch, es wird die platformunabhängige Einheit C++-Byte verwendet. Was soll überhaupt die "echte" Größe sein? Wenn ein Stab einen Meter lang ist, und eine Funktion dir 1000 Millimeter gibt, ist das plötzlich nicht die echte Größe?

    Die einzigen Typen für die tatsächlich nicht die echte Größe zurückgegeben wird (weil das keinen Sinn macht) sind Referenzen.



  • Arcoth schrieb:

    Das Ergebnis von sizeof hat also nicht zwangsläufig etwas mit der echten Größe des Typen zu tun.

    Doch, es wird die platformunabhängige Einheit C++-Byte verwendet. Was soll überhaupt die "echte" Größe sein? Wenn ein Stab einen Meter lang ist, und eine Funktion dir 1000 Millimeter gibt, ist das plötzlich nicht die echte Größe?

    Hast du meinen ganzen Nachtrag überhaupt gelesen oder habe ich das zu schlecht erklärt?

    Gut, "echte" war vielleicht ein wenig unpassend gewählt.



  • omfg.

    Swordfish schrieb:

    Ein Byte hat mindestens 8 Bit.
    Ein char , char signed , char unsigned ist mindestens ein übliches 8-bit Byte lang.
    Ein (unsigned) short und ein (unsigned) int ist mindestens 2 übliche 8-bit Byte lang.
    Ein (unsigned) long ist mindestens 4 übliche 8-bit Bytes lang.
    Ein (unsigned) long long ist mindestens 8 übliche 8-bit Bytes lang.



  • Swordfish schrieb:

    omfg.

    Das du das weißt, wissen wir.
    Es geht um den TE und andere Leser.



  • Swordfish schrieb:

    omfg.

    OMFG, ja.
    Wenn du mit "ein Byte hat mindestens 8 Bit" anfängst, und es um C++ geht, dann ist die Annahme wohl nicht verkehrt dass du von einem C++ Byte redest. Und dann sind die folgenden Definitionen eben falsch.

    Und wenn du ein "übliches Byte" meinst, dann ist das "ein Byte hat mindestens 8 Bit" zumindest total irreführend. Denn ein "übliches Byte" hat genau 8 Bit, nicht mindestens 8.

    Und auf Architekturen wo ein Byte z.B. 16 oder 24 Bit hat, gelten die folgenden Definitionen (so wie du sie ursprünglich formuliert hast - also int mindestens 2 Byte etc.) auch nicht.

    Aber wieso überhaupt alles so kompliziert machen?
    char hat mindestens 8 Bit, short und int mindestens 16, long mindestens 32 und long long mindestens 64.
    Was ist daran so kompliziert dass man es "einfacher" (und damit falsch) machen müsste?



  • manni66 schrieb:

    Swordfish schrieb:

    Ein Byte hat mindestens 8 Bit.

    Heute dürften es wohl immer genau 8 Bit sein. Als aber C entwickelt wurde waren auch weniger als 8 gebräuchlich.

    Thaaa. Ein Standard C Byte hat genauso wie ein Standard C++ Byte mindestens 8 bit. Immer.


  • Mod

    Hausaufgabe: Rausfinden wann sich die Betragsminima in limits.h etabliert haben.



  • wayne interessiert prä-89?


  • Mod

    Habs mal gesplittet. (Der erste Beitrag von SeppJ hätte da eigentlich nicht wegkommen sollen, wenn ich es mir recht überlege...)


Anmelden zum Antworten