Was ist toll an size_t?



  • Ich hab das doch oft erklärt 🙂

    size_t muss nicht immer unsigned long sein, so gibt es mehr als nur 32Bit Systeme. Außerdem ist es IMHO verständlicher, wenn eine Variable vom Typ size_t ist, was damit gemacht werden soll.

    Und wie bereits erklärt kann man sich durch dieses hin und hergewurschtel mit den Typen (vorallem wenn dann noch jemand auf die Idee kommt int oder so für die Größe zu benutzen), schwer auffindbare Sicherheitslücken holen.

    Und bevor ich mir so einen unnötigen Stress mache, nehm ich doch einfach gleich size_t, aus dem Grund gibt es den Typ ja auch im Standard. Ich finde das eigentlich noch nichtmal diskussions würdig



  • und size_t wird doch gehighlighted :p



  • *test*

    size_t
    

    MfG SideWinder



  • ist eben kein Keyword, aber mit deiner Argumentation möchte ich dich dann doch auch bitten, dass du aufhörst Strukturen und Klassen (typedefs natürlich auch, so wie size_t eines ist) zu verwenden, weil die werden ja auch nicht gehighlightet



  • ja, könnte man ändern



  • Ich argumentiere hier überhaupt nirgends (außer vielleicht im ersten Post). Wollte bloß mal von kingruedi hören was ihm so an size_t liegt. Benütze es ja auch des Öfteren. Er macht aber grade soviel tam tam drum (Signatur, etc.) 😉

    Dachte es hat einen speziellen Grund 🤡

    MfG SideWinder



  • size_t ist systemabhängig und wird für längenangaben benutzt. auf einem kleinen controller mit kleinem adressraum könnte size_t z.b. 8 bits sein



  • @SideWinder
    ja, weil es ein weit verbreiteter Fehler in Büchern und Tutorien ist, dass int oder so was anstelle size_t genommen wird. Deswegen muss man da ein wenig helfen. iostream anstelle von iostream.h ist ja mittlerweile nicht mehr so ein Problem.

    🙂



  • Mal ne ganz naive Frage:

    Wofür steht das "_t" bei size_t? Für Typ?



  • Gregor schrieb:

    Mal ne ganz naive Frage:

    Wofür steht das "_t" bei size_t? Für Typ?

    Das kommt wohl noch aus alten C-Zeiten. K&R haben mal eingeführt, dass typedef-Typen mit Unterstrich-T enden. Daher stammt auch der Name wchar_t (obwohl wchar_t in C++ ein eingebauter Typ und kein Typedef ist).



  • Jo. size wär ein bisschen nervig, weil jede zweite size_t Variable size heißt 😉



  • SideWinder schrieb:

    1. Doch ich schreibe "unsigned long int" und nicht "unsigned long"

    Naja, deinen Programmierstil kann man sowieso nicht ernstnehmen. Du klammerst das return-Argument obwohl es sich bei return nicht um eine Funktion handelt, du verwendest const Value-Parameter, du schreibst unsigned long int usw.

    Btw:
    <: ist ein Digraph. Wenn du also einen Vector von ::std::irgendwas anlegen willst, musst du ein Leerzeichen zwischen der spitzen Klammer und dem ersten Doppelpunkt machen.



  • Bashar schrieb:

    Jo. size wär ein bisschen nervig, weil jede zweite size_t Variable size heißt 😉

    Das Problem sehe ich nicht. Man hat ja auch kein string_t oder so, obwohl es hier wohl ein ähnliches Problem gibt.



  • @Hume: const value mach ich nicht mehr. Was ist so schlimm an return in Klammern? Und was ist daran so schlimm wenn ich mich klar und deutlich mit unsigend long int ausdrücke?

    MfG SideWinder



  • @Gregor die Entscheidung _t als Postfix zu nehmen wurde in C getroffen, da gab es keine Namespaces und C++ hat das dann eben übernommen.

    Aber wie gesagt, um die Namensproblematik zu vermeiden, gibt es ja viele Lösungen (so wie Klassennamen am Anfang groß schreiben etc.)

    @SideWinder nichts, aber es ist nicht üblich. Übrigens ist unsigned und unsigned long genauso eindeutig 🙄



  • Aber wie gesagt, um die Namensproblematik zu vermeiden, gibt es ja viele Lösungen (so wie Klassennamen am Anfang groß schreiben etc.)

    Der Struppi gebraucht die shift-Taste leider nur zum Unterstrich eingeben. 🤡



  • @kingruedi:

    HumeSikkins schrieb:

    Naja, deinen Programmierstil kann man sowieso nicht ernstnehmen.

    Darunter verstehe ich nicht "unüblich" sondern "zu dumm". Da ist es schonmal Stilsache, und dann kann man bestimmte Stile erst gar nicht ernstnehmen 😞

    MfG SideWinder



  • Soweit ich das überblickt habe, benutzt Marc++us in seinem Buch auch nicht immer stringent size_t.



  • SideWinder schrieb:

    Darunter verstehe ich nicht "unüblich" sondern "zu dumm". Da ist es schonmal Stilsache, und dann kann man bestimmte Stile erst gar nicht ernstnehmen 😞

    naja, ungarische Notation kann man ja auch nicht ernst nehmen. Oder ein C vor dem Klassennamen. Oder ein unsigned long int. Macht alles keinen Sinn.

    Wobei ein

    const unsigned short int twice(const unsigned short int param)
    {
      return(param*2);
    }
    

    irgendwie lustig ist.
    Ungarische Notation wäre zB nur traurig.

    Es ist schön wenn du dich konsequent an einen Stil hältst - aber warum schreibst du denn gerne soviel? Und andererseits ist dir size_t wieder zu umständlich zu schreiben...



  • Shade Of Mine schrieb:

    Ungarische Notation wäre zB nur traurig.

    meinste? ich verwende es zwar auch nicht aber ganz sinnlos ist das nicht. die variablen haben im extremfall dann zwar blöde namen (z.b. rgrgrgszDerName) aber was solls.


Anmelden zum Antworten