我正在为一个项目研究算法,我遇到了一些我认为可能有用的代码。但是,当我尝试阅读代码时,我在理解代码中的语句时遇到了一些困难。这是代码。
int firstWord[MAX_WORD_SIZE] = {0}, c = 0;
while (word1[c] != '\0') //word1 is char[] sent as a parameter
{
firstWord[word1[c]-'a']++;
c++;
}
我理解(我希望是正确的)第一行是设置我的最大大小的整数数组,并将元素初始化为零,同时使初始计数器值“c”为零。
我知道 while 循环遍历 word1[]
数组的所有字符,直到它到达最后一个字符 '\0'
我对 firstWord[word1[c]-'a']++; 这行感到困惑
word1[c]
应该给出一个字符,那么 -'a'
有什么作用呢?这是否会将 char 转换为一个整数,从而允许您访问 firstWord[]
数组的元素并使用 ++
递增?如果是,哪个元素或整数由 word1[c]-'a'
最佳答案
word1[c]-'a'表示word1第c位的字符与'a'的整数值之差。它主要计算单词中字母出现的次数。
所以如果 word1[c] 是 'b',那么 word1[c]-'a' 的值将是 ('b' - 'a') = 1。所以 'b' 在word 将递增 1。
关于c - 涉及 char 数组的 C 语句的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745100/