int zu char
-
Thomas++ schrieb:
Musst aber bei -127 > x > 127 mit Datenverlust rechnen.
ging das nicht bis +128?
naja, egal, jedenfalls sind dann alle bits oberhalb der breite eines 'char' wech...
-
Hast Recht, aber es geht von -128 bis +127
-
Thomas++ schrieb:
Hast Recht, aber es geht von -128 bis +127
Aber auch nur wenn ein char 8 groß ist.
-
Logo.

Wo z.B. ist denn ein Char keine 8 Bit lang?
-
Thomas++ schrieb:
Logo.

Wo z.B. ist denn ein Char keine 8 Bit lang?
Gibt durchaus Fälle wo das so ist!
Festgelegt ist nur das ein Char einem Byte entspricht. Und ein Byte muss durchaus nicht 8 Bit groß sein.grüße
-
David_pb schrieb:
Thomas++ schrieb:
Hast Recht, aber es geht von -128 bis +127
Aber auch nur wenn ein char 8 groß ist.
...und signed ist (es ist auch erlaubt, daß 'char' vorzeichenlos ist - dann geht der Wertebereich von 0 bis 255).
(PS: Über die tatsächliche Größe eines Byte legt der Standard afaik nichts fest, außer daß es mindestens 8 Bit hat)
-
CStoll schrieb:
David_pb schrieb:
Thomas++ schrieb:
Hast Recht, aber es geht von -128 bis +127
Aber auch nur wenn ein char 8 groß ist.
...und signed ist (es ist auch erlaubt, daß 'char' vorzeichenlos ist - dann geht der Wertebereich von 0 bis 255).
(PS: Über die tatsächliche Größe eines Byte legt der Standard afaik nichts fest, außer daß es mindestens 8 Bit hat)
Genau!
Folgende Kriterien muss ein Byte erfüllen:
Es muss groß genug sein um jedes Zeichen des Basisausführungszeichensatzes speichern zu können
Aus einer Folge hintereinander liegender Bits bestehen
Adressierbar seinIn der Datei limits.h gibts ein #define das die Bitanzahl für den verwendeten Compiler angibt: CHAR_BIT.
Außerdem können für dementsprechende Informationen die numeric_limits<> Traits der STL verwendet werden.
grüße
-
hmmm diese konvertierung
int x = 5; char c = (char)x;ist aber nicht wirklich c++, sondern eher c.
es gibt doch in c++ casts. (wie man die verwendet weiß ich selbst net so genau)
vielleicht kann jemand anders was dazu sagen.
-
Hallo
ja das ist ein C-Cast. Aber weder in C noch in C++ braucht man für Übertragung von char zu int und umgekehrt irgendeinen Cast.
int x = 5; char c = x;Sondern hier must du dir Gedanken über möglichen Datenverlust machen, denn char hat nun mal einen kleineren Wertebereich als int.
bis bald
akari
-
akari schrieb:
ja das ist ein C-Cast. Aber weder in C noch in C++ braucht man für Übertragung von char zu int und umgekehrt irgendeinen Cast.
int x = 5; char c = x;sollte eigentlich 'ne warnung ausspucken 'konvertierung von ... möglicher datenverlust' o.ä.