Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

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! */
	... 


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys