Når du leser om datatyper, brukes ofte «type definition» uten noen tidligere forklaring på hva det betyr.
For eksempel, i https://en.wikipedia.org/wiki/Type_system , har vi setningen «… siden C ++ har sterkere regler angående type definisjoner …»
Enhver hjelp til å avklare hva forskjellen er på, for eksempel type og type definisjon er verdsatt!
Kommentarer
- Vet du hva en type er? Deretter er en type definisjon , som begrepet antyder, definisjonen av en type. Jeg ' er ikke sikker på hva det virkelige spørsmålet ditt er her.
Svar
«Definere» en type er handlingen med å bygge en ny type sammensatt av en eller flere eksisterende datatyper. For eksempel blir typen «Complex Number» ofte erklært som et ordnet par «Real Numbers»:
Type Complex Real a Real b End
a og b er de virkelige og imaginære delene .
Dette eksemplet på pseudokode er en «Type Definition».
Kommentarer
- Jeg don ' t tror dette er det ' blir spurt … Å definere en abstrakt datatype er selvfølgelig en typedefinisjon, men har ingenting å gjøre med sterk eller svak skriving (del av spørsmålet)
Svar
Fra «C ++ programmeringsspråk» -av Bjarne Stroustrup skaperen av C ++.
En type definerer et sett med mulige verdier og et sett med operasjoner (for et objekt).
Også følgende definisjoner er sammenhengende med typen hentet fra samme bok
En erklæring er en uttalelse som introduserer et navn i programmet. Det spesifiserer en type for den navngitte enheten
Et objekt er noe minne som har en verdi av noen type.
En verdi er et sett med bits tolket i henhold til en type.
En variabel er et navngitt objekt
Kommentarer
- Dette gjør ikke ' t nevne type definisjon .
Svar
Variabler kan inneholde forskjellige typer verdier, f.eks. Heltall, realer, tegn … Dette kalles variabeltypen. Noen språk er dynamisk skrevet. Det betyr at tolken eller kompilatoren bestemmer typen variabel for deg. På statiske typede språk må du definere typen selv når du erklærer variabelen. Dette er TYPE DEFINISJONEN.
På sterke typiske statiske språk forbyr reglene å blande forskjellige typer. Hvis du vil legge til, for eksempel et reelt og et helt tall, må du eksplisitt kaste heltallet til det virkelige.
i et svakt skrevet språk kan du blande typer. men siden bitnivåene på lavt nivå varierer mellom typene, kan du få uønskede resultater.
De fleste språk er et sted i mellom. Det vil være klart at uønskede effekter ikke er akseptable, mens behovet for en eksplisitt rollebesetning gjør koden tung. Så de fleste kompilatorer vil gjøre en implisitt rollebesetning for noen standardoperasjoner. Å legge til et reelt og et helt tall vil i så fall implisitt provosere en rollebesetning til ekte.
Kommentarer
- Hva er " pe " ? Jeg ser heller ikke ' hvordan det du ' har skrevet etter første avsnitt, er relatert til spørsmålet.
- @ David: pe = eksempli gratia = For eksempel = = for eksempel … Setningen " … siden C ++ har sterkere regler angående typedefinisjoner … " viser etter min mening at spørsmålet blir stilt i sammenheng med svak og sterk skriving.
- Aha – at ' s " f.eks. ", på engelsk – redigert.
- faktisk er det. min feil.
- Dette svaret viser en rekke alvorlige misforståelser av typer og typesystemer. Nesten hver setning i dette svaret er feil, forvirrende eller villedende. Som en start handler typesystemer ikke bare om variabler:
3+'a'
betyr ikke ' t involverer noen variabler, men vil bli typekontrollert. Dynamisk " skrevet " språkimplementeringer don ' t " bestem " typen av hva som helst. Implisitte konverteringer gjør ikke ' t til å gjøre et språk mer " dynamisk " eller " svakt " skrevet.Generelt er statisk og dynamisk " skriving " ikke motsatte ender av et spekter, men snakker ganske enkelt om forskjellige ting helt.