Em alguns momento é possível que precisamos criar ciclos numéricos, por exemplo, vamos supor que desejamos contar de 0 até 5 e após isso retornar ao zero. Uma solução simples seria algo como:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <stdio.h>

int main(int argc, char* argv[]) {
	int i = 0;

	for(;;) {
		printf("%d\n", i++);
		if (i == 5) {
			i = 0;
		}
	}

	return 0;
}

Este tipo de código funciona muito bem e é simples de entender, porém podemos usar a nosso favor a matemática e utilizando o operador módulo, que traz o resto da divisão, conseguimos o mesmo efeito:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include <stdio.h>

int main(int argc, char* argv[]) {
	int i = 0;

	for(;;) {
		printf("%d\n", i++);
		i = i % 5;
	}

	return 0;
}

Uma vantagem do operador módulo sobre o if é que ele também funciona para quando seguimos para a direção contrária, como  podemos ver abaixo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include <stdio.h>

int main(int argc, char* argv[]) {
	int i = 0;

	for(;;) {
		printf("%d\n", i--);
		i = i % 5;
	}

	return 0;
}

Uma vantagem dessa abordagem é que ela pode ser mais rápida pois evita saltos de código ao utilizar um operador matemático.