Eu me deparei com uma experiência estranha em programação C. Considere 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;
}
Ao compilar e executar isso, não recebo erros ou avisos. Como meu palestrante disse, o índice do array -1
acessa outra variável. Ainda estou confuso, por que diabos uma linguagem de programação tem esse recurso? Quero dizer, por que permitir índices de matriz negativos?
-1
de uma sub-matriz é uma maneira perfeitamente válida de se referir ao elemento antes dessa matriz na matriz maior. A outra é que, se o índice for inválido, o programa é inválido, mas na maioria das implementações você terá um mau comportamento silencioso, não um erro fora do intervalo.