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:
#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:
#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:
#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.