Bij het lezen over gegevenstypen wordt “typedefinitie” vaak gebruikt zonder enige voorafgaande uitleg van wat het betekent.
Bijvoorbeeld, in https://en.wikipedia.org/wiki/Type_system hebben we de zin “… aangezien C ++ sterkere regels heeft met betrekking tot typedefinities …”
Alle hulp bij het verduidelijken wat het verschil is tussen bijvoorbeeld type en typedefinitie wordt enorm gewaardeerd!
Reacties
- Weet je wat een type is? Een typedefinitie is dan, zoals de term suggereert, de definitie van een type. Ik ' weet niet zeker wat uw echte vraag hier is.
Antwoord
Het “definiëren” van een type is het bouwen van een nieuw type dat is samengesteld uit een of meer reeds bestaande gegevenstypen. Het type “Complex getal” wordt bijvoorbeeld vaak gedeclareerd als een geordend paar “Reële getallen”:
Type Complex Real a Real b End
a en b zijn de reële en imaginaire delen .
Dit voorbeeld van pseudo-code is een “typedefinitie”.
Reacties
- Ik don ' t denk niet dat dit is wat ' s wordt gevraagd … Het definiëren van een abstract gegevenstype is natuurlijk een typedefinitie, maar heeft niets te maken met sterke of zwak typen (deel van de vraag)
Antwoord
Van “The C ++ Programming Language” -door Bjarne Stroustrup de maker van C ++.
Een type definieert een reeks mogelijke waarden en een reeks bewerkingen (voor een object).
Ook zijn de volgende definities in verband met het type uit hetzelfde boek
Een declaratie is een statement die een naam in het programma introduceert. het specificeert een type voor de genoemde entiteit
Een object is een soort geheugen dat een waarde van een bepaald type bevat.
Een waarde is een set bits geïnterpreteerd volgens een type.
Een variabele is een genoemd object
Reacties
- Dit doet ' typedefinitie niet vermelden.
Antwoord
Variabelen kunnen verschillende soorten waarden bevatten, bijvoorbeeld gehele getallen, reële getallen, karakters … Dit wordt het TYPE van de variabele genoemd. Sommige talen worden dynamisch getypt. Dat betekent dat de interpreter of de compiler het type variabele voor jou bepaalt. In statisch getypeerde talen moet u het type zelf definiëren bij het declareren van de variabele. Dit is de TYPE DEFINITIE.
In sterk getypeerde statische talen verbieden de regels het mengen van verschillende typen. als je bijv. een reëel en een geheel getal wilt toevoegen, moet je het gehele getal expliciet naar reëel casten.
in een zwak getypte taal kun je typen mixen. maar aangezien de lage bitpatronen van type verschillen, kunt u ongewenste resultaten krijgen.
De meeste talen zitten ergens tussenin. Het zal duidelijk zijn dat ongewenste effecten niet acceptabel zijn, terwijl de behoefte aan een expliciete cast de code zwaar maakt. Dus de meeste compilers zullen een impliciete cast uitvoeren voor sommige standaardbewerkingen. Het toevoegen van een reëel en een geheel getal zal in dat geval impliciet een cast tot real provoceren.
Reacties
- Wat is " pe " ? Ook zie ik ' niet hoe wat u ' hebt geschreven na de eerste alinea betrekking heeft op de vraag.
- @ David: pe = exempli gratia = Omwille van voorbeeld = bijvoorbeeld … De zin " … aangezien C ++ strengere regels heeft met betrekking tot typedefinities … " laat naar mijn mening zien dat de vraag wordt gesteld in de context van zwak en sterk typen.
- Aha – dat ' s " bijv. ", in het Engels – bewerkt.
- inderdaad. mijn fout.
- Dit antwoord toont een verscheidenheid aan ernstige misverstanden aan over typen en typen systemen. Vrijwel elke zin van dit antwoord is onjuist, verwarrend of misleidend. Om te beginnen gaan type-systemen niet alleen over variabelen:
3+'a'
heeft geen ' t betrekking op variabelen, maar wordt op type gecontroleerd. Dynamisch " getypt " taalimplementaties niet ' t " beslis " het type van iets. Impliciete conversies ' maken een taal niet meer " dynamisch " of " zwak " getypt.Over het algemeen zijn statisch en dynamisch " typen " geen tegengestelde uiteinden van een spectrum, maar hebben ze het gewoon over verschillende dingen.