Wann std::size_t und wann int?



  • cooky451 schrieb:

    size_t benutzt man, überraschenderweise, wenn man mit Größen (wie viele Elemente? wie viele Byte?) arbeitet.

    Wenn man mit Grössen von Dingen arbeitet die in den Speicher passen/im Speicher liegen.
    Wenn man z.B. mit File-Grössen arbeitet sollte man dafür nicht unbedingt size_t verwenden.

    Und wenn man's ganz genau nimmt, dann sollte man auch Bits von beliebig grossen Datenstücken nicht mit size_t zählen, auch wenn diese immer im Speicher liegen. Weil's halt typischerweise 8x mehr Bits gibt als Bytes.



  • Das mit den Bits ist so eine Sache, auf 64 bit Systemen sieht's da schlecht aus. Aber wenn wir mal ehrlich sind, wer muss schon mehr als 2^64 von irgendwas zählen? 🤡



  • Wann nehmt ihr eigentlich unsigned int?

    <💡>



  • cooky451 schrieb:

    Das mit den Bits ist so eine Sache, auf 64 bit Systemen sieht's da schlecht aus. Aber wenn wir mal ehrlich sind, wer muss schon mehr als 2^64 von irgendwas zählen? 🤡

    "And the Lord could not count grains of sand with a 32-bit word." julia ecklar - the eternal flame



  • glühbirne schrieb:

    Wann nehmt ihr eigentlich unsigned int?

    <💡>

    So ziemlich immer, wenn ich keine Lust habe, <cstddef> zu includen und ueberall std:: zu schreiben.



  • glühbirne schrieb:

    Wann nehmt ihr eigentlich unsigned int?

    Wann immer eben ein unsigned int benötigt wird. Beispielsweise bei irgendwelchen Bitmasken, da z.B. ein Rechtsshift auf signed int undefiniert ist...



  • cooky451 schrieb:

    Das mit den Bits ist so eine Sache, auf 64 bit Systemen sieht's da schlecht aus. Aber wenn wir mal ehrlich sind, wer muss schon mehr als 2^64 von irgendwas zählen? 🤡

    Graf Zahl?



  • dot schrieb:

    da z.B. ein Rechtsshift auf signed int undefiniert ist...

    gibt es eigentlich wie in Java so einen vorzeichenlosen shift? (java: >>>)



  • Skym0sh0 schrieb:

    dot schrieb:

    da z.B. ein Rechtsshift auf signed int undefiniert ist...

    gibt es eigentlich wie in Java so einen vorzeichenlosen shift? (java: >>>)

    Ähm, was glaubst du ist ein unsigned int!?



  • dot schrieb:

    da z.B. ein Rechtsshift auf signed int undefiniert ist...

    Ich hätte jetzt gemeint implementation-defined.



  • hustbaer schrieb:

    dot schrieb:

    da z.B. ein Rechtsshift auf signed int undefiniert ist...

    Ich hätte jetzt gemeint implementation-defined.

    Stimmt, sry, natürlich implementation-defined, aka nicht portabel und darum gings mir... 😉


Anmelden zum Antworten