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