Ist unsigned char nötig ?
-
Hallo !
Zugegeben eine etwas komische Überschrift, ist allerdings thread-treffend.
Der Werteberich eines char liegt bei -127 to 127. Bei einem unsigned char bei 0 to 255. Es ist aber so das der char Datentyp auch sämtliche Zeichen up to 255 darstellen kann. Meine Annahme: Es ist unsinnig einen unsigned Datentyp in MFC Applikationen zu verwenden, wo C-Strings benötigt werden. (Dies bezieht sich lediglich auf C-Strings mit dem char Datentyp). Auch Microsoft's Datentypen der LP..STR Reihe sind Zeiger vom Typ char. Liege ich vollkommen daneben oder kann man das so sagen ?
-
wenn benutzt wird wirds wohl n grund haben
-
Sovok schrieb:
wenn benutzt wird wirds wohl n grund haben
Sorry aber der Aussage kann ich nicht ganz folgen. Was meinst Du damit ?
-
Die "signedness" eines Typs kommt zum tragen bei:
- Vergleichsoperationen
(unsigned char c : (c<0) ist niemals true)
- Shift-Operationen
(signed typ: arithmetic shift, Vorzeichen bleibt erhalten)
- Vorzeichenbehalt bei Datentyperweiterung (z.B. auf int/unsigned int)Somit mach ein "unsigned char" zumindest erstmal Sinn.
ob "char" alleine mit oder ohne Vorzeichen ist, ist (glaub ich) dem Compiler überlassen - um die hardwarespezifisch beste darstellung wählen zu können.
-
bei nutzung eines chars fuer berechnungen und datenspeicherung ist die unterscheidung zwischen signed und unsigned natuerlich absolut notwendig
bei nutzung der chars fuer speicherung von zeichen und strings ist es aber unnoetig
weil man wird kaum einen vergleich < machen und shifts machen bei zeichenoperationen auch keinen sinngomberl
-
Gut. Also ist es nicht notwendig einen unsigned char zu wählen, wenn diese Variable nur Zeichen beherrbergen soll.
Schönen Danke auch.