Mi sono imbattuta in una strana esperienza nella programmazione C. Considera questo codice:
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;
}
Quando compilo ed eseguo questo, non ricevo alcun errore o avviso. Come ha detto il mio docente, l'indice dell'array -1
accede a un'altra variabile. Sono ancora confuso, perché mai un linguaggio di programmazione ha questa capacità? Voglio dire, perché consentire indici di array negativi?
-1
di un subarray è un modo perfettamente valido per fare riferimento all'elemento prima di quell'array nell'array più grande. L'altro è che se l'indice non è valido, il programma non è valido, ma nella maggior parte delle implementazioni otterrai un comportamento silenzioso, non un errore fuori portata.