Нет выхода за границы
У меня есть этот код на C, который принимает в кучуchar
s
#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 ++ и получил то же самое поведение. Может ли кто-нибудь объяснить, в чем причина этого?