Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

13.2.1 Merkkityyppi

Yksittäinen merkki on C- kielessä tyyppiä char:

	char rek_1_merkki;
	rek_1_merkki = 'X'; 

Huomattakoon, että merkkityypin vakio kirjoitetaan yksinkertaisiin lainausmerkkeihin. Vakio on tosin kokonaislukutyyppinen, eli

	sizeof('a') == sizeof(int) ( sizeof(char) == 1 )

Merkkityyppi on käytännössä (yleensä) 8- bittinen kokonaisluku. Toteutuksesta riippuen joko etumerkillinen tai etumerkitön. Siis merkkimuuttujiin voidaan vallan hyvin sijoittaa myös lukuarvoja:

	char m;
	m = 65;
	if ( m == 'A' ) ... 
	

Lukuarvo tarkoittaa merkin (ASCII- ) koodia.

Merkkien etumerkillisyys tulee ilmi esimerkiksi Turbo- C: ssä seuraavasti:

c-taul\merkit.c - esimerkki merkkien vertailusta

	  char m1,m2,m3; 
	  m1='a';
	  m2='z';
	  m3='ä';
	  if ( m1 < m2 ) printf("%c < %c \n",m1,m2);
	  printf("%c = %d,  %c = %d \n",m1,m1,m2,m2);
	  if ( m1 < m3 ) printf("%c < %c \n",m1,m3);
	  printf("%c = %d,  %c = %d \n",m1,m1,m3,m3); 

Jälkimmäistä if tulostusta ei tapahdu. ä:n koodi on 132, joka olisi suurempi kuin a:n ASCII- koodi eli 97, mutta koska Turbo-C:ssä merkit ovat etumerkillisiä, on ä:n koodi - 124!

HUOM! Tästä syystä merkkityyppisten muuttujien käyttö taulukoiden indeksinä on vaarallista!


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys