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:
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!