Приоритет оператора говорит о том, что сначала применяются скобки []
, а затем оператор приращения ++
, используемый в качестве префикса, т.е. ++cc[c]
анализируется как ++(cc[c])
.
Действительно, в этом контексте я бы предпочел использовать cc[c]++;
, так как будет легко разобрать без двусмысленности, даже не зная приоритета.
Что cc[c]++
или ++cc[c]
делает для увеличенияc
-й элемент в массиве, на который указывает cc
единица.Эти две формы различаются по значению выражения , первое значение оценивается как значение до увеличения , а второе - до значения после увеличения .Значение выражения игнорируется здесь, поскольку оно вычисляется как выражение void
в выражении выражения, и поэтому вы можете использовать любую форму.
Первый for
цикл с использованием i
обнуляет каждый элемент в массиве счетчиков символов (cc
).Этот цикл на самом деле не нужен, если массив инициализируется нулями: просто запись
int cc[MAXCHAR] = {0};
обнулит каждый элемент в массиве cc
.