char immer 1 Byte? bool immer 1 Byte?
-
Vertexwahn schrieb:
wo kann ich mir den C++ Standard kaufen (habe keine Kreditkarte) - geht das auch irgendwie per Überweisung oder so?
kaufen? druck's dir doch aus. kannst es in'nem copy-shop auch als buch binden lassen
-
net schrieb:
kaufen? druck's dir doch aus. kannst es in'nem copy-shop auch als buch binden lassen
Und woher bekommt man den Text so dass man ihn ausdrucken kann, schlaumeier?
-
net schrieb:
Vertexwahn schrieb:
wo kann ich mir den C++ Standard kaufen (habe keine Kreditkarte) - geht das auch irgendwie per Überweisung oder so?
kaufen? druck's dir doch aus. kannst es in'nem copy-shop auch als buch binden lassen
Was willst du dir denn ausdrucken, wenn du das Teil nicht gekauft hast
@Vertexwahn
Das britische Standard Institut hat den Standard auch in Buchform rausgebracht.
-
Shade Of Mine schrieb:
Und woher bekommt man den Text so dass man ihn ausdrucken kann, schlaumeier?
den find'ste mit etwas 'googlen'
-
-
Vertexwahn schrieb:
bool immer 1 Byte?
Nein. Der Standard sagt lediglich, dass ein bool sich wie ein integraler Typ (char, short, int, long) verhalten muss. Darüber hinaus wird die Grösse nicht vorgeschrieben.
C++ Standard schrieb:
sizeof(bool) and sizeof(wchar_t) are implementationdefined
Der Standard wird sogar noch deutlicher
C++ Standard schrieb:
sizeof(bool) is not required to be 1
Und sizeof liefert ja bekanntlich die Grösse in Bytes.
-
BTW: Wenn ich das jetzt richtig verstanden habe, dann besteht ein char in C99 aus genau 8 Bits, da folgendes gelten muss #define CHAR_BIT 8 und sizeof(char) == 1
aber andernseits darf der wertebereich von unsigned char bzw. signed char auch größer als 256 verschiedene kombinationen sein - wie soll das gehen?
-
Vertexwahn schrieb:
BTW: Wenn ich das jetzt richtig verstanden habe, dann besteht ein char in C99 aus genau 8 Bits, da folgendes gelten muss #define CHAR_BIT 8 und sizeof(char) == 1
CHAR_BIT muss mindestens 8 sein, nicht genau.
-
.2.4.2.1 Sizes of integer types <limits.h>
The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives. Moreover, except for CHAR_BIT and MB_LEN_MAX, the following shall be replaced by expressions that have the same type as would an expression that is an object of the corresponding type converted according to the integer promotions. Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.- number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8
minimum value for an object of type signed char
SCHAR_MIN -127 // -(27 - 1)
— maximum value for an object of type signed char
SCHAR_MAX +127 // 27 - 1
— maximum value for an object of type unsigned char
UCHAR_MAX 255 // 28 - 1
— minimum value for an object of type char
CHAR_MIN see below
— maximum value for an object of type char
CHAR_MAX see below
— maximum number of bytes in a multibyte character, for any supported localeIf the value of an object of type char is treated as a signed integer when used in an expression, the value of CHAR_MIN shall be the same as that of SCHAR_MIN and the value of CHAR_MAX shall be the same as that of SCHAR_MAX. Otherwise, the value of CHAR_MIN shall be 0 and the value of CHAR_MAX shall be the same as that of UCHAR_MAX.15) The value UCHAR_MAX shall equal 2CHAR_BIT - 1.
except for CHAR_BIT - das heißt doch ich darf das define nicht verändern oder? klär mich mal auf
-
net schrieb:
den find'ste mit etwas 'googlen'
ist aber illegal
-
In Kontext von C99 ist ein „bit“ eine Speichereinheit in der Laufzeitumgebung, die groß genug ist zwei verschiedene Zustände zu repräsentieren. Das lässt sehr viel Spielraum. Ein „bit“ muss also nicht dem entsprechen, das man normalerweise als Bit bezeichnet. Ein „bit“ könnte z. B. aus 5 Bits bestehen.
Ein byte ist in C eine adressierbare Einheit, die groß genug ist ein Zeichen aus dem „basic character set“ (minimalen Zeichenvorrat) der Laufzeitumgebung zu repräsentieren. Es ist also möglich jedes byte mit einer eindeutigen Adresse zu identifizieren. Ein byte ist eine Zusammenhängende Sequenz von bits, deren Anzahl Implementierungsabhängig ist. Ein byte ist dabei so groß das es ein Zeichen aus dem minimalen Zeichenvorrat repräsentieren kann bzw. noch größer.
Mit diesem Überlegungen komme ich jetzt zu folgenden Schluss
ein bit könnte aus 2 Bit bestehen
ein byte könnte aus 8 bit bzw. 16 Bits bestehendamit hätte man schon mal einen größeren Wertebereich für char ohne Veränderung des defines - oder bin ich jetzt total auf dem Holzweg?
-
Vertexwahn schrieb:
except for CHAR_BIT - das heißt doch ich darf das define nicht verändern oder? klär mich mal auf
Einfach mal den Satz zuende lesen. Was gilt denn "except for CHAR_BIT"?
Wie kommst du eigentlich darauf, das define verändern zu wollen?
In Kontext von C99 ist ein „bit“ eine Speichereinheit in der Laufzeitumgebung, die groß genug ist zwei verschiedene Zustände zu repräsentieren. Das lässt sehr viel Spielraum. Ein „bit“ muss also nicht dem entsprechen, das man normalerweise als Bit bezeichnet. Ein „bit“ könnte z. B. aus 5 Bits bestehen.
Ich würde sagen, das ist ein bisschen weit hergeholt.
-
Bashar schrieb:
Einfach mal den Satz zuende lesen. Was gilt denn "except for CHAR_BIT"?
yups - sollte erst lesen lernen
Bashar schrieb:
Ich würde sagen, das ist ein bisschen weit hergeholt.
Es ist nicht nur weit hergeholt, sondern auch totaler schwachsinn - in C99 steht, dass ein bit zwei verschiedene zustände annehmen kann
bit
unit of data storage in the execution environment large enough to hold an object that may have one of two valuesdanke für die aufklärung