Ошибка (активно) E0137 выражение должно быть допустимым для изменения левосторонним значением

Понятия не имею что ему не нравиться, но указывает на эту ошибку в 5-ой строке.

 void poz_perv_i_posl_par_0(int* x, int n)
 {
    int i;
    for (i = 0; i < n; i++)
        if (x[i] = 0 && x[i+1] = 0)
        {
            printf("Порядковый номер первого элемента первой пары\n i=% ", i);
            break;
        }
    for (i = n; i = 0; i--)
        if (x[i] = 0 && x[i + 1] = 0)
        {
            printf("Порядковый номер первого элемента последней пары\n i=% ", i);
            break;
        }
}

Ответы (1 шт):

Автор решения: Harry

Приоритеты операторов приводят к тому, что ваше

if (x[i] = 0 && x[i+1] = 0) 

рассматривается как

if (x[i] = (0 && x[i+1]) = 0) 

т.е. вы, получается, хотите присвоить значение 0 выражению

0 && x[i+1]

Т.е. сделать что-то вроде

5+3 = 2

присвоить 2 сумме 5+3 :)

А вообще, просто типичная ошибка - перепутать оператор присваивания = и сравнения на равенство ==. Явно хотели написать

if (x[i] == 0 && x[i+1] == 0)
→ Ссылка