Datentypen in C



  • Hallo,

    Ich bin ziemlicher Anfänger was C betrifft (wir lernen das in der Schule),
    Ich habe irgendwie ein Problem mit den Datentypen.
    Hier mal eine Auflistung,
    ich weiss aber nicht, ob das wirklich stimmt:

    1 Byte hat ja 8 Bit, ist 1 Byte auch ein einzelner Datentyp?

    Character, 1 Byte: -128 bis +127
    UCharacter: 0 bis +255
    Integer: ???
    Unsigend Integer: ???
    Short, 2 Byte, -32768 bis + 32767
    UShort, 2 Byte, 0 Bis + 65535
    Long, 4 Byte, -2147483648 bis +2147483467
    ULong, 4 Byte, 0 bis 4294967295

    Float, 4 Byte, [Wertebereich kenne ich], 6 Stellen genauigkeit
    Double, 8 Byte, [Wertebereich kenne ich], 15 Stellen genauigkeit
    Long Double, 10 Byte [Wertebereich kenne ich], 17 Stellen genauigkeit

    Ich wollte einfach mal fragen, ob das stimmt und wie der Wertebereich von Integer und Unsigned Integer ist.

    Gruss 1234User



  • 1234user schrieb:

    1 Byte hat ja 8 Bit, ist 1 Byte auch ein einzelner Datentyp?

    Ein Byte ist ein Byte und kein Datentyp. Ein Datentyp, der z. B. nur ein Byte belegt, ist char .

    1234user schrieb:

    Long, 4 Byte, -2147483648 bis +2147483467

    -4294967296 bis +4294967295

    1234user schrieb:

    Ich wollte einfach mal fragen, ob das stimmt und wie der Wertebereich von Integer und Unsigned Integer ist.

    Die angegebenen Werte-Bereich sind "Standard-Werte." All diese Werte können zwischen verschiedenen Betriebssystemen, Prozessorplattformen und Compilern abweichen.
    Im Normalfall ist int aber mit long gleichzusetzen, was den Wertebereich angeht (jedenfalls auf 32 Bit).



  • Danke für die schnelle Antwort

    devkid schrieb:

    1234user schrieb:

    Long, 4 Byte, -2147483648 bis +2147483467

    -4294967296 bis +4294967295

    Und ULong ist dann einfach von 0 bis +8 589 934 591
    nehm ich an,

    Danke und Gruss
    1234User



  • devkid schrieb:

    1234user schrieb:

    Long, 4 Byte, -2147483648 bis +2147483467

    -4294967296 bis +4294967295

    Nö.



  • ein byte kann auch ein (selbst definierter) datentyp sein und ist es auch sehr oft.
    z.b. unter windows, definiert in der windef.h:

    typedef unsigned char BYTE;
    

    mfg



  • Diese 4294967296 sind doch für Unsigned Long oder nicht?
    Weil man rechnet doch 2^32 (weil 4 Byte * 😎 und das gibt doch immer den Wertebereich für Unsigned.
    z.B. für Character ist ja 2^8 ja 255, aber das ist ja für UChar.

    Gruss 1234User

    @kannsein;
    Ok, danke! 🙂



  • ^^das ist alles nicht genau festgelegt. char muss mindestens 8 bit haben und int mindestens 16, ansonsten: char <= short <= int <= long. für die bereiche kannste in die 'limits.h' deines compiler schauen.
    btw, sogar die bezeichnung 'byte' ist ziemlich willkürlich. 8 bits sind nur am meisten verbreitet. wenn du pingelig bist, musste für 8 bits 'oktett' sagen.
    🙂



  • volkard schrieb:

    devkid schrieb:

    1234user schrieb:

    Long, 4 Byte, -2147483648 bis +2147483467

    -4294967296 bis +4294967295

    Nö.

    Upps...

    -2147483648 bis +2147483647



  • Die minimal geforderten Wertebereiche sind:

    signed char:       -2^7 -1 ... 2^7 -1
    unsigned char:             0 ... 2^8 -1
      signed short:     -2^15 -1 ... 2^15 -1
    unsigned short:            0 ... 2^16 -1
      signed int:       -2^15 -1 ... 2^15 -1
    unsigned int:              0 ... 2^16 -1
      signed long:      -2^31 -1 ... 2^31 -1
    unsigned long:             0 ... 2^32 -1
      signed long long: -2^63 -1 ... 2^63 -1
    unsigned long long:        0 ... 2^64 -1
    


  • Danke für die Antworten,

    langsam komm ich draus, bei den Datentypen 🙄
    (sollte ich auch: morgen gibt's test darüber)

    Danke und Gruss
    1234User


Anmelden zum Antworten