ich habe ja char = 8 Bit deklariert, woher kommen dann die oberen 8 Bit FFxx ? also ein word ?
Empfangszeichenkette[n] ist ein char, da hast du Recht.
0xFE ist aber einint
Der Vergleich == wird daher mit zwei int gemacht.
char c = 0xFE; ist vorzeichenbehaftet. Also -2 oder als int gesehen das gleiche wie 0xFFFE;
const int i = 0xFE; ist natürlich 254, und damit ungleich -2
Wenn es dich tröstet: du bist nicht der einzige, dem das erst beim Testen auffällt.