dポイントプレゼントキャンペーン実施中!

#include <stdio.h>

void str_dcount(const char str[], int cnt[])
{
unsigned i = 0;
while (str[i]) {
if (str[i] >= '0' && str[i] <= '9')
cnt[str[i] - '0']++;
i++;
}
}

int main(void)
{
int i;
int dcnt[10] = {0};
char str[100];

printf("文字列を入力してください:");
scanf("%s", str);

str_dcount(str, dcnt);

puts("数字文字の出現回数");
for (i = 0; i < 10; i++)
printf("'%d':%d\n", i, dcnt[i]);

return (0);
}

というプログラムの、cnt[str[i] - '0']++ の部分の - '0' がなぜ必要なのか理解できません。ゼロをマイナスするというのはあってもなくても同じだと思うんですが。

A 回答 (2件)

'0'は文字ですので数字で言うところのゼロではないですね


'0'を数字に表すと48です

ASCIIコード というのを調べてみましょう
    • good
    • 1

Asciiコード表の'0'と数字の0との意味の差を考えてみましょう。

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!