书上一个数组例子的疑问
/* 1.6 数组 *//* 统计各个数字,空白符及其他字符出现的次数 */
#include <stdio.h>
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i) // 给数组的10个元素赋值
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9') // 这里不理解???
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t') //如果是空白符就给变量加一
++nwhite;
else
++nother; //不是数字,不是空白符给变量加一
printf("digits =");
for (i = 0; i < 10; ++i) //输出数组的各个元素
printf(" %d", ndigit[i]);
printf(", white space = %d, other = %d\n", nwhite, nother);
}
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
我的理解:
判断c是否大于0小于9
然后给数组加一
我的疑惑是:
1 为什么它的判断里 0和9 要用 单引号括起来?
2 数组的下标里 c- '0' 是什么意思?