Почему возникновение ошибки времени выполнения в кодировании языка c? - PullRequest
2 голосов
/ 07 мая 2019

Почему возникла ошибка времени выполнения в кодировке языка c?

Ответ правильный, но у меня ошибка во время выполнения.

#include <stdio.h>
int main()
{
    int arr[10]= {0};
    int a = 0,b = 0;
    scanf("%d %d",&a,&b);
    arr[0] = a;
    arr[1] = b;
    for (int i = 0; i <10; i++) {
        arr[i+2]=arr[i]+arr[i+1];
        if(arr[i] > 10)
            arr[i] = arr[i] % 10;

        printf("%d ",arr[i]);
    }
}

1 Ответ

1 голос
/ 07 мая 2019

В вашем коде переполнена память. Скажем, в цикле, когда i равно 8,

arr[i+2]=arr[i]+arr[i+1];

вы пытаетесь получить доступ к arr[10] в arr[i+2], что является выходом за пределы допустимого, вызывая неопределенное поведение .

Вы должны изменить условие цикла на

for (int i = 0; i <8; i++) 

чтобы сохранить индексы между 0 - 9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...