Kirjainvakiot muutetaan kokonaisluvuiksi. Järjestelmästä riippuen kirjain- tyypin arvo voi olla joka etumerkitön ( unsigned) (usein hyvä asia) tai etumerkillinen ( signed). Itse merkin sisäinen esitys kummassakin tapauksessa on sama, mutta laajennettaessa merkki kokonaisluvuksi saattaa etumerkki sotkea koko homman. Käytännössä on kyse seuraavasta:
'a' = 0x61 = 0110 0001 - > 0000 0000 0110 0001 (unsigned) 0000 0000 0110 0001 (signed) 'ä' = 0x84 = 1000 0100 - > 0000 0000 1000 0100 (unsigned) 1111 1111 1000 0100 (signed)
Erityisesti tämä on muistettava käytettäessä kirjaimia indekseinä:
char c; ... kirjaimet[c]++; /* Lisätään kirjainten lkm. */ /* VÄÄRIN */ :-( ... kirjaimet[(unsigned char)c]++; /* OIKEIN! */ ...