Почему выводится неверная сумма?

Функция должна подсчитывать сумму строки из матрицы. Подсчет верный, кроме 1 строки, скрин:введите сюда описание изображения

Вот фрагмент кода, почему вывод 27, а не 22?

#define x 5
#define y 2
   
int main()
{
    int ** a = (int**)calloc(x, sizeof(int* ));
    for (int i = 0; i < x; i++)
        a[i] = (int*)calloc(y, sizeof(int));

    input_matrix(a, x, y);

    for (int i = 0; i < x; i++)
        printf("%d\n", sum_row(a[i], y));

}

int sum_row(int* p, int n)
{
    int sum;
    for (int i = 0; i < n; i++)
        sum += *(p+i);
    return sum;
}

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

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

Локальные переменные надо инициализировать.

Замените

int sum;

на

int sum = 0;
→ Ссылка