C上的C数学/整数运算

时间:2017-05-16 14:47:13

标签: c

我目前正在阅读K& R书。第22页,数组1.6

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 == '\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);

它说字符被认为是整数。我尝试删除&#39; 0&#39; 0在第一个如果声明。但是,阵列停止工作。如果字符被认为是整数,为什么&#39; 0&#39;程序运行正常所需

1 个答案:

答案 0 :(得分:0)

字符数字,但'0' 不是 0,但(在大多数情况下)48,{{1} } 不是 '1'但是(在大多数情况下)1,依此类推。

Here is the detailed explanation of it.