English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base del linguaggio C

Controllo di flusso del linguaggio C

C语言函数

C语言数组

C语言指针

C语言字符串

Struttura del linguaggio C

File del linguaggio C

Altri C

Manuale di riferimento del linguaggio C

C语言goto语句

In questo tutorial, imparerai a creare istruzioni goto nel linguaggio C. Inoltre, imparerai quando usare le istruzioni goto e quando non usarle.

Le istruzioni goto ci permettono di trasferire il controllo del programma a un etichetta label specifica.

Sintassi delle istruzioni goto

goto label;
... .. ...
... .. ...
label: 
statement;

label è un identificatore. Quando goto incontra questa istruzione, il controllo del programma salta a label: e inizia a eseguire il codice.

Esempio: istruzioni goto

// Il programma calcola la somma dei numeri positivi
// Se l'utente inserisce un numero negativo, visualizza la somma e la media.
#include <stdio.h>
int main() {
   const int maxInput = 100;
   int i;
   double number, average, sum = 0.0;
   for (i = 1; i <= maxInput; ++i) {
      printf("%d. Inserisci il numero: ", i);
      scanf("%lf", &number);
      
      // Se l'utente inserisce un numero negativo, salta
      if (number < 0.0) {
         goto jump;
      }
      sum += number;
   }
jump:
   average = sum / (i - 1);
   printf("Somma (somma) = %.2f\n", sum);
   printf("Media (media) = %.2f", average);
   return 0;
}

Risultato di output

1. Inserisci il numero: 3
2. Inserisci il numero: 4.3
3. Inserisci il numero: 9.3
4. Inserisci il numero: -2.9
Somma (somma) = 16.60
Media (media) = 5.53

Ragioni per evitare o usare di meno le istruzioni goto

L'uso delle istruzioni goto può portare a errori nel codice e essere difficile da seguire. Ad esempio:

one:
for (i = 0; i < number; ++i)
{
    test += i;
    goto two;
}
two: 
if (test > 5) {
  goto three;
}
... .. ...

Inoltre, le istruzioni goto ti permettono di eseguire operazioni non desiderate, come uscire da un intervallo.

Nonostante ciò, goto a volte può essere utile. Ad esempio: rompere un ciclo annidato.

Dovresti usare goto?

如果您认为使用goto语句可以简化程序,则可以使用它。话虽如此,goto它很少有用,您也可以在不使用任何goto语句的情况下,创建任何C程序。

这是C++的创建者Bjarne Stroustrup的话:“'goto'无所不能的事实,正是我们不使用它的原因。”