Skip to content

Istruzioni di Salto

Le istruzioni di salto (jump statements) trasferiscono incondizionatamente il controllo a un’altra sezione della funzione. Corrispondono da vicino alle istruzioni di salto (jump/branch) del linguaggio Assembly.

L’istruzione goto trasferisce l’esecuzione del programma all’etichetta (label) specificata, all’interno della stessa funzione.

goto ERRORE; // Salta alla label 'ERRORE'
printf("Questo non verrà stampato\\n");
ERRORE:
printf("Si è verificato un problema!\\n");

Queste istruzioni sono essenziali per avere maggior controllo all’interno dei cicli (for, while, do...while):

  • continue: Interrompe l’iterazione corrente e salta direttamente alla successiva valutazione della condizione del ciclo. Il codice che segue il continue nel blocco viene ignorato per quel giro.
  • break: Interrompe l’intero ciclo (o lo switch in cui si trova) e fa proseguire il programma con l’istruzione successiva al blocco.
for (int i = 0; i < 10; i++) {
if (i == 3) continue; // Salta il 3
if (i == 7) break; // Ferma tutto a 7
printf("%d ", i);
}
// Stamperà: 0 1 2 4 5 6

La parola chiave return termina l’esecuzione della funzione corrente e restituisce il controllo alla funzione chiamante (il “caller”). Può restituire un valore, se la funzione lo richiede (es. return x + y;), oppure terminare semplicemente la funzione se questa è di tipo void (scrivendo solo return;).

Pattern Cleanup con goto: Simula l’allocazione di due risorse (es. file). Se la seconda fallisce, usa goto error_file1; per saltare al codice che libera la prima risorsa.