Я работаю над алгоритмом для проекта, и я натолкнулся на какой-то код, который, по моему мнению, может оказаться полезным. Однако, когда я пытаюсь прочитать код, мне трудно понять заявление в коде. Вот код.Значение выражения С, содержащей char arrays
int firstWord[MAX_WORD_SIZE] = {0}, c = 0;
while (word1[c] != '\0') //word1 is char[] sent as a parameter
{
firstWord[word1[c]-'a']++;
c++;
}
Я понимаю (я правильно надеюсь), что первая строка является создание целочисленного массива моего максимального размера, и инициализация элементов к нулю вместе с созданием начального значения счетчика «с» равен нулем.
Я понимаю, что цикл, пока цикл через все символы в word1[]
массиве, пока он не попадает в окончательный CHAR '\0'
я запутался на линии firstWord[word1[c]-'a']++;
word1[c]
должен дать символ, так что же делать -'a'
делать? Означает ли это, что char имеет целое число, которое позволит вам получить доступ к элементу массива firstWord[]
и увеличить его с помощью ++
? Если да, то какой элемент или целое задается word1[c]-'a'
[** Эта таблица **] (http://www.asciitable.com) может помочь вам лучше понять это выражение. – WhozCraig
Посмотрите на столбец с надписью 'dec' рядом с буквами в таблице. Затем подумайте о выполнении математики (вычитание в этом случае). – WhozCraig
Спасибо, извините, что я удалил свой комментарий, когда понял, что у меня вопрос буквально сразу после того, как я спросил вас. Спасибо за вашу помощь! –