bool



  • peterchen schrieb:

    btw. laut (meines verständnisses des) standard "mißt" sizeof() die Größe in chars, nicht in bytes.

    Nur das 1 char == 1 byte ist... ansonsten korrekt.



  • nicht zwingend - "char" ist durch das "Execution character set" definiert, "byte" als kleinste direkt adressierbare Einheit.

    Also: ein C++ - Compiler für ein OS auf zich-bit-Maschine, die als kleinste Einheit 17 bit adressieren kännte, aber einen 32-Bit-Unicode-Zeichensatz verwendet, 32 bit für char verwenden, die "kleinste Adressierbare Einheit" wäre euin compiler-spezifischer Datentyp (oder ein short, sofern der kleiner als ein char sein darf)

    Aber wie gesagt, das ist mein Verständnis des Standards. zumindest ist in jedem Fall sizeof(char) == 1 garantiert.



  • char ist 1Byte, jedoch ist die Bitzahl dieses bytes plattformäbhängig ne Plattform
    mit 10Bit pro byte wäre char 1byte, jeodch 10Bit groß.



  • Soll char nicht "Ein Zeichen des Zeichensatzes der Ausführungsumgebung" halten können? (Bin mir da nicht sicher... und hab keinen Standard da.) und das wäre auf einem 10Bit-Unicode-OS auch mindestens 2 Byte.



  • peterchen schrieb:

    Soll char nicht "Ein Zeichen des Zeichensatzes der Ausführungsumgebung" halten können?

    Ja und?
    C++ definiert char als ein byte. Da kannst du nix rum diskutieren.



  • peterchen schrieb:

    nicht zwingend - "char" ist durch das "Execution character set" definiert, "byte" als kleinste direkt adressierbare Einheit.

    Also: ein C++ - Compiler für ein OS auf zich-bit-Maschine, die als kleinste Einheit 17 bit adressieren kännte, aber einen 32-Bit-Unicode-Zeichensatz verwendet, 32 bit für char verwenden, die "kleinste Adressierbare Einheit" wäre euin compiler-spezifischer Datentyp (oder ein short, sofern der kleiner als ein char sein darf)

    Darf aber nicht. -- Du sollst die Norm nicht interpretieren, Du sollst sie lesen, und da steht ziemlich eindeutig in 1.7#1, daß man in einem Byte jedes Dingsbums aus dem basic execution character set speichern kann, außerdem hat es eine Adresse. Sizeof 5.3.3#1 misst die Anzahl der Bytes(!), wobei sizeof(char) immer eins wird.



  • Hier noch ein netter Artikel, der die meisten Fragen über 'bool' beantworten sollte:
    http://gotw.ca/gotw/026.htm

    gruß,
    walker



  • @Daniel: danke
    Der Standard definiert also praktisch Byte = Char, wieviele Bit auch immer.

    Ich kenn halt Byte aus der Assembler-Programmierung als "kleinste direkt adressierbare Einheit, wieviele Bit auch immer"



  • Zur Auflockerung oder Verwirrung (?) hier ein paar Infos (jedenfalls laut Microsoft/Borland-Hilfe):

    bool = C++ keyword, meist definiert als int (oder auch byte)
    BOOL = typedef int BOOL
    boolean = typedef unsigned char boolean
    BOOLEAN = typedef BYTE BOOLEAN (typedef unsigned char BYTE)

    🙄



  • George3D: Und was bringt dir die Auflistung von zu 75% nicht im Standard vertretenen Typen? Ich denke die Diskussion war längst geklärt.



  • 75% nicht im Standard vertreten?
    Mehr noch, denn er schreibt in Klammern bei bool byte und das ist kein C++ Buildin Type 😉
    Hm, naja, wobei ein Byte ja gleich ein char ist, ok, dann nur 75 % 🙄


Anmelden zum Antworten