字符与数值运算的有关问题

字符与数值运算的问题
int c;
int i,va[26] = {0};

while ((c = getchar()) != '\n')
{
if (c >= 97 && c <= 122)
{
va[c - 97]++;
printf("if\n");
}
}

这里的c - 97 是c的ascII编码-数值97对吗?
------解决思路----------------------
引用:
这里的c - 97 是c的ascII编码-数值97对吗?

对。97实际上就是'a'的ascii编码。
这段代码改成这样也是一样的效果,但是看着更清楚:
        if (c >= 'a' && c <= 'z')
        {
            va[c - 'a']++;
------解决思路----------------------
引用:
int c;
int i,va[26] = {0};

while ((c = getchar()) != '\n')
{
if (c >= 97 && c <= 122)
{
va[c - 97]++;
printf("if\n");
}
}

这里的c - 97 是c的ascII编码-数值97对吗?

更准确的说是保存在int类型变量 c 中的字符(这里是小写字母)的ascii编码-数值97。