länge von unsigned char



  • Die Größe der Variablentypen sind ein Vielfaches von char .
    Ein char hat mindestens 8 Bit.
    sizeof(char) ist per Default 1.

    Es gilt sizeof(char) < sizeof(short) <= sizeof(int) <= sizeof(long) .

    Bei den Compiler für MS-DOS und Windows 3.x war ein int (meist) 16 Bit.



  • DirkB schrieb:

    Es gilt sizeof(char) < sizeof(short) <= sizeof(int) <= sizeof(long) .

    Nein, sizeof(short) ist nicht zwingend größer als sizeof(char).



  • Bashar schrieb:

    Nein, sizeof(short) ist nicht zwingend größer als sizeof(char).

    Nach K&R muss short mindestens 16 Bit haben, also groesser als char.
    Weiss aber nicht, was im aktuellen Standard steht.

    Gruesse



  • gigg schrieb:

    Nach K&R muss short mindestens 16 Bit haben, also groesser als char.

    Größer als die Mindestgröße von char. Niemand sagt aber, dass char nicht auch bereits 16 Bit haben kann. 😉



  • dot schrieb:

    Größer als die Mindestgröße von char. Niemand sagt aber, dass char nicht auch bereits 16 Bit haben kann. 😉

    Das Zwinkern ist unnötig, sowas gibt es wirklich.



  • dot schrieb:

    gigg schrieb:

    Nach K&R muss short mindestens 16 Bit haben, also groesser als char.

    Größer als die Mindestgröße von char. Niemand sagt aber, dass char nicht auch bereits 16 Bit haben kann. 😉

    Ok. War immer davon ausgegangen, das char ein Byte ist, weil sizeof(char) 1 ist.



  • gigg schrieb:

    Ok. War immer davon ausgegangen, das char ein Byte ist, weil sizeof(char) 1 ist.

    Niemand sagt, dass ein Byte immer 8 Bit haben muss. 😉



  • Ein char hat in C mindestens 8 Bit. Ein Byte ist in C das, was ein char belegt, also auch mindestens 8 Bit. Wenn man allgemein von den üblichen 8-Bit-Bytes sprechen will, sagt man am besten Oktett.



  • dot schrieb:

    Niemand sagt, dass ein Byte immer 8 Bit haben muss. 😉

    Das ist mir jetzt auch neu. Aber ich lerne gern dazu. 🙂



  • Mal ein Auszug aus K&R 1.Auflage deutsch.

    Anhang A, 2.6 Hardware Eigenschaften

    Zu Honywell 6000
    
    char    9 Bit
    int    36
    short  36
    long   36
    float  36
    double 72
    

    Der restlichen Hardwarebeispiele haben 8-Bit char und unterscheiden sich nur in der Größe von int (16- bzw. 32.Bit)



  • DirkB schrieb:

    Zu Honywell 6000)

    Selbst auf aktuellen Prozessoren ist sowas noch üblich. Beispiel TIs C55x-DSPs:

    char, signed char       16 bits 
    unsigned char           16 bits
    short, signed short     16 bits 
    unsigned short          16 bits
    int, signed int         16 bits
    unsigned int            16 bits
    long, signed long       32 bits 
    unsigned long           32 bits
    long long               40 bits
    unsigned long long      40 bits
    enum                    16 bits
    float                   32 bits
    double                  32 bits
    long double             32 bits
    
    pointers (data)
                            small memory mode 16 bits 
                            large memory mode 23 bits
    pointers (function)
                            24 bits
    

    Quelle: TIs Userguide für den C-Compiler.
    http://www.ti.com/litv/pdf/spru281f

    Immerhin ist es Zweierkomplement.



  • Sind übrigens auch IEC-559-Floats. Double und Long Double scheinen einfach zu Float identisch zu sein. Gibt also nur Single-Precision.


Anmelden zum Antworten