Почему моя программа не входит в бесконечный цикл, когда массив C выходит за границы в C

int main(){
   int i;
   int arr[4];
   for(int i=0; i<=4; i++){
      arr[i] = 0;
   }
   return 0;
}
Я посмотрел видео на youtube CS107 (лекция 13), в котором показан этот пример, и рассказал, почему приведенная выше программа приведет к бесконечному циклу, показывая диаграммы памяти. arr [4] выходит за пределы и должен приводить к адресу, на котором хранится i, и изменению значения i обратно на 0, что приводит к бесконечному циклу. Но когда я попытался запустить это на своем Mac с помощью компилятора gcc, цикл выполнялся (проверяется путем вставки printf) 5 раз. т.е. для значения i = 0,1,2,3,4.

Ответы на вопрос(2)

Ваш ответ на вопрос