Нет выхода за границы

У меня есть этот код на C, который принимает в кучуchars

#include<stdio.h> 
# define NEWLINE '\n'
int main()
{

char c;
char str[6];
int i = 0;
while( ((c = getchar()) != NEWLINE))
{
        str[i] = c;
        ++i;
        printf("%d\n", i);
}

return 0;
}

Входные данные: testtesttest

Выход: 1 2 3 4 5 6 7 8 117 118 119 120

Мои вопросы:

Почему я не получаю исключение вне границы (ошибка сегментации), хотя я явно превышаю емкость массива?

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

Я попробовал это в C ++ и получил то же самое поведение. Может ли кто-нибудь объяснить, в чем причина этого?

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

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