C Academy · Lektion

Enum-värden och intervall

Styr de underliggande heltalen.

Lektion 2 av 413 steg

Enum-värden och intervall är en gratis lektion i C Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C Academy innehåller totalt 4 lektioner.

Tilldela uttryckliga värden

Du är inte bunden till standardföljden 0, 1, 2. Du kan tilldela vilket heltal som helst till ett namn med hjälp av =.

Det är användbart när talen måste stämma överens med ett externt system, till exempel HTTP-statuskoder.

enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };

Skriva ut anpassade värden

När värdena har tilldelats är det exakt dessa tal som lagras och skrivs ut.

Här motsvarar enum-namnen direkt standardiserade HTTP-koder.

#include <stdio.h>
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };
int main(void) {
    printf("%d %d\n", OK, NOT_FOUND);
    return 0;
}

Blanda uttryckliga värden och standardvärden

Om du anger vissa värden och lämnar andra tomma fortsätter varje tomt namn att räknas från det föregående värdet.

Ett namn direkt efter = 10 blir alltså 11, sedan 12 och så vidare.

#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;
}

Börja på ett

Ett vanligt knep är att låta det första värdet vara 1 i stället för 0, så att numreringen motsvarar hur människor räknar.

Här är MON 1, vilket gör att dagarna numreras från 1 till 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;
}

Dubblettvärden är tillåtna

Två enum-namn kan ha samma heltalsvärde. C kräver inte att de ska vara unika.

Det används ibland för att skapa alias för samma begrepp.

#include <stdio.h>
enum Color { RED = 1, CRIMSON = 1, BLUE = 2 };
int main(void) {
    printf("%d %d\n", RED, CRIMSON);
    return 0;
}

Negativa värden

Enum-värden kan också vara negativa. De är heltal med tecken.

Det kan uttrycka felkoder under noll tillsammans med ett neutralt eller positivt intervall.

#include <stdio.h>
enum Temp { COLD = -1, NORMAL = 0, HOT = 1 };
int main(void) {
    printf("%d %d %d\n", COLD, NORMAL, HOT);
    return 0;
}

Knepet med en COUNT-sentinel

Om du listar objekt med början på 0 och lägger till ett sista namn är det sista namnet lika med antalet objekt.

Det här COUNT-knepet ger storleken automatiskt, även när du lägger till nya objekt.

#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
    printf("%d fruits\n", FRUIT_COUNT);
    return 0;
}

Enum som arrayindex

Eftersom enum-värden är heltal fungerar de utmärkt som arrayindex.

Tillsammans med COUNT-knepet kan du dimensionera en array exakt och indexera den med lättlästa namn.

#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;
}

Den underliggande typen

I standard-C lagras enum-värden i en heltalstyp som kompilatorn väljer, vanligtvis int.

Typen är tillräckligt stor för att rymma alla värden du definierar, så även stora eller negativa konstanter får plats.

#include <stdio.h>
enum Big { SMALL = 0, LARGE = 1000000 };
int main(void) {
    printf("%d\n", LARGE);
    return 0;
}

Ingen inbyggd intervallkontroll

C hindrar dig inte från att tilldela ett värde som inte finns i listan till en enum-variabel.

Tilldelningen nedan kompileras och körs. Det är ditt ansvar att se till att värdena är giltiga.

#include <stdio.h>
enum Level { LOW, MID, HIGH };
int main(void) {
    enum Level x = 99;
    printf("%d\n", x);
    return 0;
}

Iterera över ett intervall

När en enum går från 0 till en COUNT-sentinel kan du iterera över alla värden med en enkel for-loop.

Detta går igenom varje definierat objekt fram till, men inte inklusive, räknaren.

#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;
}

Snabbkontroll

Resonera kring blandade enum-värden.

Sammanfattning

Du kan tilldela uttryckliga enum-värden, blanda dem med standardvärden, upprepa värden och använda negativa värden.

COUNT-sentinel-knepet håller automatiskt reda på listans storlek, och enum fungerar utmärkt som arrayindex. Kom ihåg: C utför ingen intervallkontroll, så du måste själv validera värdena.

Gratis att börja

Lär dig C med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
39
Lektioner
144

Vanliga frågor

Är lektionen ”Enum-värden och intervall” gratis?

Ja – hela texten till ”Enum-värden och intervall” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Enum-värden och intervall”?

Styr de underliggande heltalen. Ni övar på C Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C Academy?

Du behöver inga förkunskaper. Utbildningen i C Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Enum-värden och intervall”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C Academy-lektionen?

Ja. Varje C Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Definiera enum-typer
  2. Enum-värden och intervall
  3. const-variabler
  4. #define-konstanter
← Tillbaka till C Academy