Respuesta a la pregunta de examen ¿es un bucle infinito?

Hace unos días publiqué una pregunta sobre bucles infinitos en C. Hoy os pongo la respuesta.

El programa era:

#include <stdio.h>
 
int main() {
	int i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito\n");
	}
 
	return 0;
}

Aparentemente sí tenemos un bucle infinito, puesto que i empieza cumpliendo la condición i>=0 y así seguirá aunque i incremente su valor.

PEEEEERO, debemos tener en cuenta que en un int no podemos almacenar un número infinito. Por ejemplo en un compilador de 32 bits el mayor número que se puede almacenar en un int es 2.147.483.647. ¿Y qué sucede cuando llegamos al 2.147.483.648? Pues que el compilador continúa en el siguiente número válido que es el -2.147.483.647. Este número, claro, ya no cumple con la condición del for. Por lo tanto el programa finalizará en ese punto.

Así que no, no tenemos un bucle infinito. Es un bucle largo pero no infinito.

Si quieres comprobarlo sin tener que esperar un rato puedes probarlo usando un char:

#include <stdio.h>
 
int main() {
	char i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito\n");
	}
 
	return 0;
}

Otra opción sería:

#include <stdio.h>
#include <limits.h>
 
int main() {
	int i;
	for (i=INT_MAX -10; i>=0; i++) {
		printf( "Am I and infinite loop? (loop %u)\n", i );
	}
 
	return 0;
}

Curso de programación en C para principiantes

Ejercicios de C resueltos y comentados

Pregunta de examen en C ¿es un bucle infinito?

En el siguiente programa ¿se produce bucle infinito? ¿por qué?

#include <stdio.h>
 
int main() {
	int i;
	for (i=0; i>=0; i++) {
		printf("Soy un bucle infinito\n");
	}
 
	return 0;
}

La respuesta en un par de días.

Curso de programación en C para principiantes

Ejercicios de C resueltos y comentados

Ejercicios de examen de C

Otro de los proyectos que tengo en marcha (suma y sigue) es un libro con ejercicios de examen de C resueltos y comentados. Para hacerlo más completo necesito más ejercicios. Si quieres colaborar puedes enviarme alguno.

¿Qué ganas enviando un ejercicio de examen?

  • Si tu ejercicio se incluye en el libro tendrás una copia gratuita del libro.

Condiciones:

  • No se trata de un servicio para solucionar problemas de examen.
  • No se admiten trabajos de clase, proyectos, ni similares, sólo ejercicios de examen.

Para colaborar rellena este formulario: