Dlaczego kompilator nie wykrywa ograniczeń w ciągłej inicjalizacji ciągów?

Przeczytałem to pytanie i jego odpowiedź w książce. Ale nie rozumiałem uzasadnienia książki.

Czy następujący kod zostanie skompilowany?

int main()
{
   char str[5] = "fast enough";
   return 0;
}

Odpowiedź brzmiała:

Tak. Kompilator nigdy nie wykrywa błędu, jeśli przekroczone zostaną granice tablicy.

Nie mogłem tego zdobyć.

Czy ktoś może to wyjaśnić?

questionAnswers(6)

yourAnswerToTheQuestion