23.2.11 'ä' < 'a'
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! */
...