Me he encontrado con una experiencia extraña en la programación en C. Considera este código:
int main(){
int array1[6] = {0, 1, 2, 3, 4, 5};
int array2[6] = {6, 7, 8, 9, 10, 11};
printf("%d\n", array1[-1]);
return 0;
}
Cuando compilo y ejecuto esto, no recibo ningún error o advertencia. Como dijo mi profesor, el índice de matriz -1
accede a otra variable. Todavía estoy confundido, ¿por qué demonios un lenguaje de programación tiene esta capacidad? Quiero decir, ¿por qué permitir índices de matriz negativos?
-1
hacer referencia al elemento de una submatriz es una forma perfectamente válida de referirse al elemento antes de esa matriz en la matriz más grande. La otra es que si el índice no es válido, el programa no es válido, pero en la mayoría de las implementaciones obtendrá un mal comportamiento silencioso, no un error fuera de rango.