Zahlen Wertbereiche


  • Mod

    Was ist denn das für ein Buch? K&R Erstauflage von 1978?



  • Danke.

    Buck. Addison-Wesley verlag von Andre Willms "C-Programmierung lernen" ISBN 3-8273-1405-4 von 2002


  • Mod

    Iglo13 schrieb:

    Danke.

    Buck. Addison-Wesley verlag von Andre Willms "C-Programmierung lernen" ISBN 3-8273-1405-4 von 2002

    Google Books flüstert mir, dass direkt unter der Tabelle steht, dass die Angaben Mindestgrößen sind. Und das ist auch korrekt so. Was übrigens auch bedeutet, dass SG1s Antwort falsch ist (ist mir zuerst nicht aufgefallen, weil ich praktisch nie einen short benutze).

    An sich verlegt Addison-Wesley nämlich meistens recht gute Bücher, wobei ich dieses spezielle nicht kenne.

    P.S.: Übliche Größen sind übrigens: char 8 Bit, short 16 Bit, int 32 Bit (auch auf 64 Bit Systemen so üblich), long 32 oder 64 Bit, long long 64 Bit. Aber wie gesagt ist wichtig, dass dies nur übliche Größen sind, keine garantierten. Dafür gibt's stdint.h.



  • Hier mal ein Vergleich Compiler aus DOS-Zeiten und aus dem Anfang der Win32-Aera:
    http://www.cquestions.com/2011/02/turbo-c-compiler.html

    Sollte auch irgend wo in den Standards stehen. Hoffe mal so ist es:
    Der absolute Wertebereich ist nicht festgelegt.
    short ist kleiner oder gleich int.
    int ist kleiner oder gleich long.

    Also falls das kritisch sein sollte: Für euren Compiler mit der passenden Compiler-Einstellung selbst ermitteln wie gross short im Zweifel ist.

    MfG f.-th.



  • C99-Standard schrieb:

    5.2.4.2.1 Sizes of integer types <limits.h>
    ...
    Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
    ...
    `— maximum value for an object of type unsigned short int

    USHRT_MAX 65535 //` 216 - 1

    Das shall lässt hier aber nicht die Wahl, dass der Wertebereich auch kleiner sein kann.



  • SeppJ schrieb:

    Was übrigens auch bedeutet, dass SG1s Antwort falsch ist (ist mir zuerst nicht aufgefallen, weil ich praktisch nie einen short benutze).

    Nein, das Buch ist hier falsch. Das passende Standard-Zitat hat DirkB ja schon gebracht.





  • Da wird wohl das shall als sollte übersetzt.
    Nach dem Motto "Besser wäre das, muss aber nicht"



  • DirkB schrieb:

    Da wird wohl das shall als sollte übersetzt.
    Nach dem Motto "Besser wäre das, muss aber nicht"

    Nein, das wäre ein beliebter Übersetzungsfehler. "Shall" heißt "Muss": shall be equal or greater = muss gleich oder größer sein. Das deutsche "soll/sollte" wird mit "should" übersetzt.

    Oder in C99:

    In this International Standard, "shall" is to be interpreted as a requirement on an implementation or on a program; conversely, "shall not" is to be interpreted as a prohibition. (C99 ISO/IEC 9899:1999 TC3, Chap. 4 (1))

    viele grüße
    ralph



  • Genaus so meinte ich es auch. 🙂

    Darum nochmal der erste Satz:
    Der Autor von dem Buch hat da wohl das "shall" als "sollte" übersetzt.

    So wie es LEO auch macht.


Anmelden zum Antworten