2000 – 13

Sia dichiarato un array

int a[10];

Cosa succede all’esecuzione del seguente codice:

for (i=0; i<=10; i++)
   a[i]=2;
  1. Tutto l’array viene inizializzato al valore 2.
  2. Si superano i limiti dell’array.
    L’errore viene segnalato in fase di compilazione.
  3. Si superano i limiti dell’array.
    L’errore viene segnalato all’esecuzione del codice.
  4. Si superano i limiti dell’array.
    L’errore non viene segnalato, ma si hanno conseguenze imprevedibili.
  5. Si superano i limiti dell’array.
    All’accesso all’undicesimo elemento, il sistema operativo assegna altro spazio all’array a e l’esecuzione prosegue.

Soluzione: 4 (Si superano i limiti dell’array. L’errore non viene segnalato, ma si hanno conseguenze imprevedibili.)


Gli elementi dell’array sono a[0], a[1], …, a[9] e il linguaggio C, tradizionalmente, non controlla gli indici all’accesso di un array.