La declaración goto en lenguaje C: cuando hay varias capas de declaraciones pero el resultado es incorrecto, salte directamente de las capas de declaraciones y vuelva a seleccionar la respuesta para juzgar.

La declaración goto no se usa comúnmente, pero cuando continuemos anidándola, se convertirá en una herramienta muy útil.

Primero hablemos de la conclusión : la función de goto y flag es solo omitir el código entre ellos, pero independientemente de si hay goto o no, las declaraciones que siguen a la bandera se ejecutarán normalmente.

1. Escenarios de uso (ejemplos)

Aquí hay un ejemplo:

Cinco atletas participaron en la competencia de saltos en plataforma de 10 metros. Alguien les pidió que pronosticaran el resultado de la competencia: el
jugador A dijo: B segundo, yo fui tercero;
el jugador B dijo: yo fui segundo, E cuarto;
el jugador C dijo: yo fue primero, D es segundo;
el jugador D dijo: C es el último, yo soy el tercero;
el jugador E dijo: soy el cuarto, A es el primero;
después del juego, cada jugador dijo correctamente la mitad de sus palabras, programe para determinar la clasificación del juego.

Mi idea es inicializar la matriz arr[6] a todos 0 y asignar valores 1,2,3,4,5,6 a cada jugador A, B, C, D y E.

Deje que el sistema genere los números aleatorios 1 y 2 para usar la declaración de cambio para seleccionar la primera mitad de la oración y la segunda mitad de la oración. Aquí se necesitan seis  declaraciones de cambio .

Pero aquí surge la pregunta: si eliges la primera mitad de la oración del jugador A y la primera mitad de la oración del jugador B, ¿es necesariamente incorrecta? Podemos desmentir directamente la respuesta esta vez sin ir más lejos.

Pero necesitamos un bucle while para determinar que cada elemento de la matriz tiene un valor. Hay una instrucción switch anidada en el while. En el caso de la instrucción switch, use la instrucción if para determinar si el elemento ha sido ocupado, y luego use break o continue . En este momento, solo se puede saltar una declaración de cambio y no se puede evitar la siguiente declaración de cambio. En este momento, es más obvio usar la declaración goto.

2. Uso de la declaración goto

También realicé búsquedas relacionadas, pero los resultados básicamente nos dieron una bandera para mostrarnos el papel de la declaración goto.

2.1 sintaxis de la declaración goto

ir al nombre;

Como se muestra en la imagen:

int main()
{
	goto flag;
	printf("a\n");
	printf("b\n");

flag:
	printf("c\n");
	printf("d\n");
	return 0;
}

De los resultados de la ejecución, podemos concluir que la declaración goto omitirá la declaración antes de la bandera. 

2.2 Acerca de la bandera

Podemos eliminar la declaración goto en el código anterior, o podemos crear un ejemplo propio que pueda usar la declaración goto sin usarla:

int main()
{
	int i = 0;
	scanf("%d", &i);
	if (i == 1)
	{
		goto flag;
	}

flag: 
	printf("第一行:%d\n", i);
	printf("第二行:%d\n", i);
	printf("第三行:%d\n", i);
	printf("第四行:%d\n", i);

	return 0;
}

Cuando ingresamos 1, el programa saltará a la bandera, pero hay dos puntos después de la bandera: ¿Cuántas líneas tiene alcance? Si la bandera solo se aplica a una línea, ¿se ejecutará si agrego una llave?

De hecho, la función de goto y flag es solo omitir el código entre ellos, pero independientemente de si hay goto o no, las declaraciones que siguen a la bandera se ejecutarán normalmente.

Supongo que te gusta

Origin blog.csdn.net/m0_75186846/article/details/132093960
Recomendado
Clasificación