Указатели, не понимаю почему не компилируется
*count = 0;
for (int i = 0; i < *n; i++)
{
if (*pa < 0)
{
*count2++;
printf("count2 %d %d<- ", *count2, i);
}
else
{
*count++;
printf("count %d %d <- ", *count,i);
}
pa++;
}
if ((*count == 0) || (*count2 == 0))
key = 1;
компилятор говорит, что count2 и count не используются, но я использую его в предпоследней строчке, в чем проблема? язык С
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
У оператора постфиксного ++ большой приоритет, больше чем у взятия значения * . Ваша команда *count2++; вычисляется так : *(count2++);
Сначала указателю даётся задача инкрементироваться (поменяеть адрес на другое), а затем берётся значение этого указателя (текущее). Вы значение игнорируете, по-этому выдаётся предупреждение. Только потом сам указатель ещё и меняется.
Скорее всего вам нужно правильно скобки поставить : (*count2)++;.