char, signed char
-
Plain char, signed char, and unsigned char are three distinct types. A char, a signed char, and an unsigned char occupy the same amount of storage and have the same alignment requirements (3.9); that is, they have the same object representation. For character types, all bits of the object representation participate in the value representation. For unsigned character types, all possible bit patterns of the value representation represent numbers. These requirements do not hold for other types.
In any particular implementation, a plain char object can take on either the same values as a signed char or an unsigned char; which one is implementationdefined.
-
c++ Newbie schrieb:
Müsste denn dann nicht test2 oder text3 ohne Fehlermeldung compilieren wenn char = unsigned char bzw. char = signed char?
Ja müsste. Es gibt entgegen anderslautendem Halbwissen in diesem Thread tatsächlich 3 verschiedene char-Typen. Warum das so ist, das kann ich dir allerdings auch nicht beantworten

-
Bashar schrieb:
Es gibt entgegen anderslautendem Halbwissen in diesem Thread tatsächlich 3 verschiedene char-Typen.
welcher ist denn der dritte typ?
'half-signed' ?
-
vista schrieb:
welcher ist denn der dritte typ?
char.
Hast den Rest des Threads wohl nicht gelesen
-
MFK schrieb:
vista schrieb:
welcher ist denn der dritte typ?
char.
Hast den Rest des Threads wohl nicht gelesen
doch, aber das funktioniert ungefähr so:
man hat die wahl zwischen 'char', 'signed char' und 'unsigned char'.
d.h. man kann sich für eine von 3 möglichkeiten entscheiden,
signed char -> ist garantiert signed
unsigned char -> ist garantiert unsigned
char -> ist entweder das eine oder das andere
- aber -
es gibt nur 2 char-typen, bei 'nur char' lässt man dem compiler die wahl, das ist der einzige unterschied, kein 'teilweise sigend' oder sowas...

-
vista schrieb:
doch, aber das funktioniert ungefähr so:[...]
char -> ist entweder das eine oder das andereNein, char hat entweder den Wertebereich von signed oder von unsigned char, ist aber immer ein eigenständiger Typ. Es wurde dazu auch schon alles gesagt, inklusive Code-Beispiel und Zitat aus dem Standard, was willst du noch?
-
Bashar schrieb:
Nein, char hat entweder den Wertebereich von signed oder von unsigned char, ist aber immer ein eigenständiger Typ.
stimmt, so gesehen hast du natürlich recht (ich hatte das codebeispiel übersehen).
ist das in C etwa auch so oder ist das eine C++ spezialität?
-
Ist in C genauso
meinten jedenfalls dir Gurus in der Linux kernel mailinglist
-
Es dürfte aber in C etwas weniger Probleme damit geben.
-
Hm und wie geht man mit char am besten um? Bleibt einem dann nur übrig auch char zu verwenden? Oder einfach casten? Viele Bibliotheksfunktion verwenden ja nur char (kein signed oder unsigned char).
Grund der Frage: verwende gerne die uintX_t und intX_t typedefs von gcc bzw. g++. Da hab ich leider kein char und wollte jetzt auch net unbedingt char verwenden