Valores e intervalos de enums
Controle os inteiros subjacentes.
Valores e intervalos de enums é uma aula grátis de C Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 4 aulas no total.
Atribuindo Valores Explícitos
Você não está limitado à sequência padrão 0, 1, 2. Pode atribuir qualquer inteiro a um nome usando =.
Isso é útil quando os números precisam corresponder a um sistema externo, como códigos de status HTTP.
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };Imprimindo Valores Personalizados
Depois de atribuídos, esses números exatos são os que serão armazenados e impressos.
Aqui, os nomes da enumeração correspondem diretamente aos códigos HTTP padrão.
#include <stdio.h>
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };
int main(void) {
printf("%d %d\n", OK, NOT_FOUND);
return 0;
}Combinando Valores Explícitos e Padrão
Se você definir alguns valores e deixar outros em branco, cada nome em branco continuará a contagem a partir do valor anterior.
Assim, um nome logo após = 10 se torna 11, depois 12 e assim por diante.
#include <stdio.h>
enum N { A = 10, B, C, D = 100, E };
int main(void) {
printf("%d %d %d %d %d\n", A, B, C, D, E);
return 0;
}Começando em Um
Um truque comum é fazer o primeiro valor ser 1 em vez de 0, para que a numeração corresponda à contagem humana.
Aqui MON é 1, fazendo com que os dias vão de 1 a 7.
#include <stdio.h>
enum Day { MON = 1, TUE, WED, THU, FRI, SAT, SUN };
int main(void) {
printf("%d %d\n", MON, SUN);
return 0;
}Valores Duplicados são Permitidos
Dois nomes de enumeração podem compartilhar o mesmo valor inteiro. C não exige que eles sejam únicos.
Às vezes, isso é usado para criar aliases para o mesmo conceito.
#include <stdio.h>
enum Color { RED = 1, CRIMSON = 1, BLUE = 2 };
int main(void) {
printf("%d %d\n", RED, CRIMSON);
return 0;
}Valores Negativos
Os valores de enumeração também podem ser negativos. Eles são inteiros com sinal.
Isso permite expressar códigos de erro abaixo de zero junto com um intervalo neutro ou positivo.
#include <stdio.h>
enum Temp { COLD = -1, NORMAL = 0, HOT = 1 };
int main(void) {
printf("%d %d %d\n", COLD, NORMAL, HOT);
return 0;
}Um Truque de Sentinela COUNT
Se você listar os itens começando em 0 e adicionar um nome final, esse último nome será igual ao número de itens.
Esse truque de COUNT fornece o tamanho automaticamente, mesmo depois que você adiciona novos itens.
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
printf("%d fruits\n", FRUIT_COUNT);
return 0;
}Enumerações como Índices de Vetores
Como os valores de enumeração são inteiros, eles são excelentes índices de vetores.
Combinando isso com o truque de COUNT, você pode dimensionar um vetor exatamente e indexá-lo com nomes legíveis.
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
int stock[FRUIT_COUNT] = {5, 3, 8};
printf("%d\n", stock[PEAR]);
return 0;
}O Tipo Subjacente
Em C padrão, os valores de enumeração são armazenados em um tipo inteiro escolhido pelo compilador, geralmente int.
O tipo é grande o suficiente para conter todos os valores que você definir, portanto constantes grandes ou negativas ainda cabem.
#include <stdio.h>
enum Big { SMALL = 0, LARGE = 1000000 };
int main(void) {
printf("%d\n", LARGE);
return 0;
}Não Há Verificação de Intervalo Integrada
C não impede você de atribuir a uma variável de enumeração um valor que não esteja na lista.
A atribuição abaixo compila e é executada. É sua responsabilidade manter os valores válidos.
#include <stdio.h>
enum Level { LOW, MID, HIGH };
int main(void) {
enum Level x = 99;
printf("%d\n", x);
return 0;
}Percorrendo um Intervalo
Quando uma enumeração vai de 0 até uma sentinela COUNT, você pode percorrer todos os valores com um for simples.
Isso percorre cada item definido até, mas sem incluir, a contagem.
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
for (int f = APPLE; f < FRUIT_COUNT; f++)
printf("%d ", f);
printf("\n");
return 0;
}Verificação Rápida
Raciocine sobre valores de enumeração combinados.
Recapitulação
Você pode atribuir valores explícitos a enumerações, combiná-los com valores padrão, repetir valores e usar valores negativos.
O truque da sentinela COUNT acompanha automaticamente o tamanho da lista, e as enumerações funcionam muito bem como índices de vetores. Lembre-se: C não faz verificação de intervalo, portanto valide os valores por conta própria.
Perguntas Frequentes
A aula “Valores e intervalos de enums” é grátis?
Sim — o texto completo de “Valores e intervalos de enums” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 4 aulas no total.
O que vou aprender em “Valores e intervalos de enums”?
Controle os inteiros subjacentes. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C Academy?
Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Valores e intervalos de enums”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C Academy?
Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Definindo enums
- Valores e intervalos de enums
- Variáveis const
- Constantes #define