När man läser om datatyper används ”typdefinition” ofta utan någon tidigare förklaring till vad det betyder.
Till exempel, i https://en.wikipedia.org/wiki/Type_system har vi meningen ”… eftersom C ++ har starkare regler angående typdefinitioner …”
Någon hjälp för att klargöra vad som är skillnaden mellan till exempel typ och typdefinition uppskattas mycket!
Kommentarer
- Vet du vad en typ är? Sedan är en typdefinition , som termen antyder, definitionen av en typ. Jag ' är inte säker på vad din verkliga fråga är här.
Svar
”Definiera” en typ är att bygga en ny typ som består av en eller flera existerande datatyper. Exempelvis förklaras typen ”Complex Number” ofta som ett ordnat par ”Real Numbers”:
Type Complex Real a Real b End
a och b är de verkliga och imaginära delarna .
Detta exempel på pseudokod är en ”typdefinition”.
Kommentarer
- Jag don ' t tror att det här är vad ' frågar … Att definiera en abstrakt datatyp är naturligtvis en typdefinition, men har ingenting att göra med stark eller svag typning (del av frågan)
Svar
Från ”C ++ programmeringsspråket” -by Bjarne Stroustrup skaparen av C ++.
En typ definierar en uppsättning möjliga värden och en uppsättning operationer (för ett objekt).
Även följande definitioner är sammanhängande med typen hämtad från samma bok
En deklaration är ett uttalande som introducerar ett namn i programmet. Det anger en typ för den namngivna enheten
Ett objekt är något minne som har ett värde av någon typ.
Ett värde är en uppsättning bitar som tolkas enligt en typ.
En variabel är ett namngivet objekt
Kommentarer
- Detta ' t nämner typdefinition .
Svar
Variabler kan innehålla olika typer av värden, t.ex. heltal, real, tecken … Detta kallas variabelns TYP. Vissa språk är dynamiskt skrivna. Det betyder att tolk eller kompilator bestämmer typen av variabel för dig. På statiska skrivna språk måste du själv definiera typen när du förklarar variabeln. Detta är TYP DEFINITION.
I starkt skrivna statiska språk förbjuder reglerna att blanda olika typer. om du vill lägga till, t.ex. ett riktigt och ett heltal, måste du uttryckligen kasta heltalet till verkligt.
i ett svagt typat språk kan du blanda typer. men eftersom bitmönstren på låg nivå skiljer sig åt mellan olika typer kan du få oönskade resultat.
De flesta språk finns någonstans däremellan. Det kommer att framgå att oönskade effekter inte är acceptabla, medan behovet av en uttrycklig roll gör koden tung. Så de flesta kompilatorer kommer att göra en implicit roll för vissa standardoperationer. Att lägga till ett riktigt och ett heltal kommer i så fall implicit att framkalla en roll till verklig.
Kommentarer
- Vad är " pe " ? Jag ser inte ' hur det du ' har skrivit efter första stycket relaterar till frågan.
- @ David: pe = exempli gratia = För exempel = till exempel … Meningen " … eftersom C ++ har starkare regler angående typdefinitioner … " visar enligt min mening att frågan ställs i samband med svag och stark typning.
- Aha – att ' s " t.ex. ", på engelska – redigerad.
- det är faktiskt. mitt misstag.
- Detta svar visar en mängd allvarliga missförstånd av typer och typsystem. Praktiskt taget varje mening i detta svar är felaktig, förvirrande eller vilseledande. Till att börja med handlar typsystem inte bara om variabler:
3+'a'
betyder inte ' t involverar några variabler men kommer att vara typkontrollerade. Dynamiskt " skrev " språkimplementeringar don ' t " bestäm " vilken typ som helst. Implicita konverteringar gör ' t för att göra ett språk mer " dynamiskt " eller " svagt " skrivet.Generellt är statisk och dynamisk " att skriva " inte motsatta ändar av ett spektrum utan bara helt och hållet pratar om olika saker.