Witam. W rozdziale o tablicach pojawia się program który zlicza wszystkie białe znaki, liczby oraz inne znaki. Wygląda on tak:
#include <stdio.h>
/*zliczanie cyfr, znaków białych i znaków innych*/
int main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\t' || c == '\n')
++nwhite;
else
++nother;
printf("digits =");
for (i = 0; i < 10; ++i)
printf("%d",ndigit[i]);
printf(", white space = %d, other = %d\n", nwhite, nother);
return 0;
}
W opisie tego programu piszą, że:
W programie wykorzystujemy cechy znakowej reprezentacji cyfr. Warunek:
if (c >= '0' && c <= '9')
określa, czy znak przechowywany w zmiennej c jest cyfrą. Jeżeli, jest, wartość liczbowa takiej cyfry wynosic-'0'
.
I tu napotkałem problem bo nie rozumiem czemu c-'0'
ma być tą liczbą. Czy ktoś z was, bardziej doświadczonych i lepiej to rozumiejących może mi to wytłumaczyć?