Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
S4My
unregistriert
Das mag schon sein. Der Standard legt fest welche Mindestgrößen einzuhalten sind. Das sieht dann ungefähr so aus:Der C++ Standard legt nur gewisse Mindestgrenzen fest. short ist genauso "vom Rechner abhängig" wie int.
So, zuerst einmal zu der Regel. Ich habe hier einen dicken Welzer vor mir liegen der da, wenn auch ein wenig peinlich, heißt: "C++ Lernen und profesionell anwenden", erschienen bei mitp in der 5.Auflage. An dieser Stelle muss ich leider sagen, ich Schussel habe mich die ganze Zeit mit den Bits geirrt , mit 32-bit wollte ich eigentlich 16 Bit Rechner beschreiben. Naja, du hast hier selbstverständlich recht. Allerdings ist auf Doppelseite 38 deutlich zu lesen das Integer exakt der Länge des Maschinenregisters entspricht, somit variabel und auf gewissen Rechner, welche heute seltener auftreten, kleiner als auf anderen. Diese Eigenschaft besitzt keine der anderen Variablen. Aber danke fürs ausbessern .Diese Regel wär mir neu. Entsprechende typedefs (wie z.B. std::uin32_t etc.) gibt's bereits in <cstdint>. Und sowas braucht man nur in Code, der tatsächlich davon abhängig ist, dass ein Integer eine ganz bestimmte Anzahl an Bits hat.
Nun ja, ich habe nichts der gleichen geschrieben. Die Verwendung der Variable short soll keineswegs zeigen das eine Variable nur einen bestimmten Wert haben darf. Das wäre relativ Sinn frei, gebe ich zu. Das man größere Werte zuweisen kann ist natürlich selbstverständlich. Meine Frage wäre jetzt nur der Grund warum man das tun sollte. Wir sind hier in einem Forum welches Spieleprogrammierer und solche die es gerne wären, jetzt darf man raten zu welcher Gruppe ich gehöre , beherbergt. Gerade hier sollte man wissen, dass es zwecks Performance schon keinen Sinn ergibt ewig lange Werte abzuspeichern.Trotzdem ist das kein geeigneter Weg um auszudrücken, dass ein Wert nur einen bestimmten Bereich haben darf. Denn ich kann deinem short trotzdem einen viel höheren Wert zuweisen. Nichts hindert mich daran und das Ergebnis ist in jedem Fall wohldefiniert.
Natürlich besteht hier auch eine Rechnerabhängigkeit. Bei den Integer Variablen ist dies jedoch weitaus gravierender als bei den anderen.
Allerdings ist auf Doppelseite 38 deutlich zu lesen das Integer exakt der Länge des Maschinenregisters entspricht, somit variabel und auf gewissen Rechner, welche heute seltener auftreten, kleiner als auf anderen. Diese Eigenschaft besitzt keine der anderen Variablen.
Gerade hier sollte man wissen, dass es zwecks Performance schon keinen Sinn ergibt ewig lange Werte abzuspeichern.
Mir viele einmal die ach so gefürchtete Portabilität ein. Ich kann durch die typedef-Methode sicherstellen das mir das Maschinenregister keinen Strich durch die Rechnung macht.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (09.06.2012, 23:50)
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
@dot: Du hast dich selbst zitiert
S4My
unregistriert
C-/C++-Quelltext |
|
1 |
typedef short int16 |
Weil selbst wenn ich mal eine endlos loop oder dergleichen habe, wie bspw. einen viel zu großen Wert zuzuweisen, bleibt es im Range von 0 - 255.
S4My
unregistriert
Mit anderen Worten: Dir würde der Bug niemals auffallen...
S4My
unregistriert
Werbeanzeige