El compilador no puede detectar subíndices fuera de los límites porque principalmente convierte el código fuente a lenguaje de máquina y solo puede indicar errores de sintaxis, no errores lógicos.
Incluso el compilador más potente no puede detectar subíndices fuera de los límites, porque el compilador convierte principalmente el código fuente a lenguaje de máquina y sólo puede señalar errores de sintaxis, no errores lógicos. La forma principal de detectar errores lógicos es utilizar un depurador
int a[]={1, 3, 4, 5, 6} //Determina el número de elementos.