signed char
y unsigned char
stehen beide für 1 Byte, haben aber unterschiedliche Bereiche.
Type | range
-------------------------------
signed char | -128 to +127
unsigned char | 0 to 255
Unter signed char
wenn wir bedenken char letter = 'A'
A' steht für den binären Wert 65 in ASCII/Unicode
Wenn 65 gespeichert werden kann, kann auch -65 gespeichert werden. Es gibt keine negativen Binärwerte in ASCII/Unicode
Es gibt keinen Grund, sich über negative Werte Gedanken zu machen.
Beispiel
#include <stdio.h>
int main()
{
signed char char1 = 255;
signed char char2 = -128;
unsigned char char3 = 255;
unsigned char char4 = -128;
printf("Signed char(255) : %d\n",char1);
printf("Unsigned char(255) : %d\n",char3);
printf("\nSigned char(-128) : %d\n",char2);
printf("Unsigned char(-128) : %d\n",char4);
return 0;
}
Ausgang -:
Signed char(255) : -1
Unsigned char(255) : 255
Signed char(-128) : -128
Unsigned char(-128) : 128