Quando quero restringir um contador até um valor máximo, utilizo o operador ‘resto de divisão’. Digamos que eu tenha uma sequência de números (por exemplo, entre 0 e 29) e que eu precise somente dos valores entre 0 e 3:
Seq
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Seq % 4
0
1
2
3
0
1
2
3
0
1
2
3
0
1
2
3
0
1
2
3
E quando isso é útil? Por exemplo, se você tiver um vetor com os caracteres “/-\|” e queira fazer uma ‘estrela de progresso’, pra indicar que está processando (em C):
void progresso(void) {
static char* caracteres = "/-\\|";
static size_t n_caracteres = strlen(caracteres);
static int i = 0;
printf("%c\b", caracteres[i]);
i = (i+1) % n_caracteres;
}
Desta forma garantimos que o valor de “i” estará sempre entre zero e o tamanho do vetor de caracteres.