Inden for datalogi og i programmering er en datatype en klassifikation der identificerer og indskrænker hvilke værdier en given mængde data repræsenterer. Af klassiske datatyper kan heltal, kommatal med begrænset præcision, tegn og Boolske værdier nævnes.

Værdier af hver datatype er en afgrænset mængde og funktioner og operatorer der opererer på dem er implementeret forskelligt. I definitionen for en datatype indregnes også hvordan datatypen lagres.

Maskin- og primære datatyper

redigér

Al data i computere er baseret på digital elektronik og repræsenteres som bits. Data tilgås imidlertid i større bidder, oftest i form af en mængde bytes (8 bits). Mængden af data som behandles i én instruktion i maskinkode kaldes et ord (eng. word) og har typisk længden 32 eller 64 bits afhængigt af processoren.

De fleste almindelige computere i dag arbejder med de grundlæggende datatyper heltal (hhv. med og uden fortegn, ofte kaldet signed og unsigned), kommatal (i variable størrelser ofte kaldet float og double) og tegn, hvorfra øvrige datatyper udvides. Særligt kan man bemærke at der ikke findes en maskindatatype for bits, men at der findes instruktioner som parallelt arbejder på sekvenser af bits i hele ord.

Dette påvirker at primære datatyper i mange programmeringssprog -- altså datatyper som er baseret på dem maskinen effektivt kan levere -- kun kan behandle værdier som kan repræsenteres med denne begrænsning. For eksempel kan et positivt heltal på en 32-bit-maskine være begrænset til tallene mellem 0 og 232-1 (4.294.967.295). Ikke at være bevidst omkring sådanne begrænsninger kan give anledning til fejl som overløb af buffere.

Abstrakte datatyper

redigér

De fleste programmeringssprog har en række grundlæggende datatyper som kan udvides ved hjælp af abstrakte datatyper, herunder, men ikke begrænset af klasser i objektorienteret programmering, uden at ændre sproget grundlæggende.

Ønsker man fx at kunne repræsentere tal af vilkårlig størrelse, kan man benytte en abstrakt datatype. Andre abstrakte datatyper inkluderer arrays, tupler, lister, træer og grafer.

Pegere og referencer

redigér

Data kan også benyttes til at pege på andet data. Programmeringssprog understøtter dette i forskelligt omfang. Dette fænomen, kaldet pegere (eng. pointer), eller referencer, er centralt i konstruktionen af abstrakte datatyper.

Typeteori og typesystemer

redigér

Ud over den praktiske anvendelse af typer eksisterer der inden for typeteori en række formelle systemer til at beskrive typer og deres indbyrdes adfærd inden for givne typesystemer.