Warum erhalte ich -95 beim addieren von char und int?
So wie ich das kenne kann man die Typen char und int einfach mit einander addieren, jedoch bekomme ich gerade beim testen :
char a = 'M'+84 ;
das richtige Zeichen aber einen negativen int (-95 ,í ). Ich habe durch auprobieren herausgefunden, dass man durch addieren von 256 (alle ascii zeichen) den dezimal Wert (ASCII : 161) erhält. Danach wollte ich die Variable auf 161 "forcen durch :
if(buffer[i]<0) buffer[i] += 256; // buffer wäre mein verrechnetes a
Warum geht das nicht, bzw. warum bekomme ich diese negative Variable?
PS. Die Programmiersprache ist c
1 Antwort
Ein char ist eine vorzeichenbehaftete 8-Bit-Zahl. Sie liegt zwischen -128 und +127.
Mit einem unsigned char würde das funktionieren. Das liegt zwischen 0 und 255.
Wenn man ein int hätte, dann könnte man 256 addieren, um den Fehler zu korrigieren, so ähnlich, wie Du es versucht hast.
Achsoo vielen Dank!
Also ist die ASCII Tabelle auch ein unsigned char?