Zu 1:
const heisst nur, dass der Compiler dich anmeckert, wenn du versuchst,
in diese Variable zu schreiben. In anderen Programmiersprachen gibt es
dazu echte Konstanten, in C allerdings nicht, d.h auch eine
const-Variable ist letztendlich nur eine Variable.
Zu 2:
Ein BYTE ist gemäss Definition immer 8 Bit breit.
Ein CHAR ist so gross, dass es ein einzelnes Zeichen des von der
Zielmaschine verwendeten Zeichensatzes aufnehmen kann. Wir sind uns
8-Bit Zeichensätze gewöhnt. Bei UNICODE allerdings ist ein Zeichen 16
Bit breit. Somit können in Unicode über 65000 Zeichen dargestellt
werden, mit unserem mickrigen ANSI-Zeichensatz lediglich deren 255.
Unsigned bedeutet lediglich, dass der Wert vorzeichenlos behandelt wird,
also der Wertebereich 0 bis zur Obergrenze geht. Dies ist vor allem bei
Vergleichen (z.B. x < 0 bei einer unsigned Variable ist quatsch) zu
berücksichtigen.
Bei Variablen ohne dem unsigned Attribut wird normalerweise das
höchstwertige Bit für das Vorzeichen verwendet.
Gruss
Christian