Stefan schrieb:
> Am 24.05.2013 09:02, schrieb Edzard Egberts:
>> Stefan schrieb:
>>> Hallo, ich habe hier einen merkwᅵrdigen Effekt mit der CooCox CoIDE
>>> festgestellt.
>>>
>>> wenn ich
>>> ----------------------
>>> unsigned char b;
>>> b = 'ᅵ'; // b = umlaut a
>>> ----------------------
>>>
>>> ausfᅵhre, hat b anschlieᅵend nicht den Dezimalwert 132, wie erwartet,
>>> sondern 228.
>>
>> Das ist bestimmt ein Vorzeichenproblem, was passiert denn, wenn Du "b"
>> als "int" deklarierst? Normalerweise sind Zeichen ja "char" und nicht
>> "unsigned char" und als char kann 'ᅵ' nicht den Dezimalwert 132
>> annehmen, weil der Wertebereich von -127 bis +128 geht.
Vertan, -128 bis 127 ist richtig.
> Nein, als unsigned char geht der Wertebereich von 0-255.
Das ist mir schon klar, ich dachte z.B. an so etwas:
unsigned char b= 'ᅵ';
if (b == 'ᅵ')
// ist immer false, weil bei der Zuweisung gecastet wurde
Die Arbeit mit "unsigned char" kann tᅵckisch sein, wenn man mit "signed
char" mischt.
> Die Antwort von Christian war schon korrekt. Offenbar arbeitet GCC bzw.
> die CooCox CoIDE mit dem ISO 8859 Zeichensatz.
Okay, in die falsche Codepage geguckt, ist natᅵrlich die ganz einfache
Lᅵsung. ;o)