Mitä tarkoitamme ohjelmointikielen tyyppitarkastuksella?


Paras vastaus

Tyyppitarkistuksen suorittaa tyyppitarkistin, joka varmistaa, että rakenteen tyyppi (vakio, muuttuja, taulukko, luettelo, objekti) vastaa odotuksia sen käyttöyhteydessä. Tämä varmistaa, että tietyntyyppiset ohjelmointivirheet havaitaan ja niistä raportoidaan. Harkitse esimerkiksi seuraavan lausekkeen sisällyttämistä moduulioperaattoriin 8\% 3,5. Tämä lauseke johtaa virheeseen, koska moduulioperaattori odottaa kahta kokonaislukua. Tyyppitarkistajan on tiedettävä – Kielen syntaktiset rakenteet (esim. Operaattorit) – Kielen perustyypit (int, todellinen) – Säännöt tyypien määrittämiselle rakenteille Esim. ”Jos molemmat + operandit ovat int, tulos on int”

Tyyppitarkistuksia on kahta tyyppiä: Staattinen ja Dynaaminen

Staattinen tyypin tarkistus: Tyyppitarkistus suoritettiin käännösaikana. Kun käytät näitä kieliä, sinun on ilmoitettava muuttujien tyyppi ennen niiden käyttöä (kääntäjä) täytyy tietää mihin tietotyyppiin muuttuja kuuluu). Tarkastellaan esimerkiksi lausetta c ++ int a = 10; tässä kääntäjän on tiedettävä muuttujan ”a” tietotyyppi ennen sen käyttöä. Esimerkiksi C, C ++, JAVA, C # ovat joitain staattisesti kirjoitettuja kieliä

Dynaamiset Tyypin tarkistus: Tyyppitarkistus suoritettu ajon aikana. Kun käytät näitä kieliä, sinun ei tarvitse määrittää tai ilmoittaa muuttujan tyyppiä, vaan kääntäjä itse selvittää, minkä tyyppinen muuttuja on, kun määrität sille ensimmäisen kerran arvon. Harkitse nyt joitain pythonin lauseita: str = ”Python” str2 = 10 Täällä ei tarvitse ilmoittaa tietotyyppiä. Kääntäjä itse tietää, minkä tyyppiseen muuttuja kuuluu, kun määrität sille ensimmäisen kerran arvon (str1 on ”String” -tietotyyppi ja str2 on ”int” -tyyppi). Esim. VBScript, Python ovat dynaamisesti kirjoitettuja kieliä.

Vastaa

Tyyppitarkistus testaa, onko toiminnolla muuttujat käyttävät yhteensopivaa tyyppiä. Eri kielillä on erilainen vaihtelevan yhteensopivuuden taso. Vahvasti tyyppitarkistetulla kielellä on tiukat säännöt muuttujatyypeille lausekkeessa. Kolikon toisella puolella on kieliä, jotka mahdollistavat erilaisten sekoittamisen. Nämä kielet kompensoivat sekatyyppejä käyttämällä muuttujien muunnosten sääntöjä.

Esimerkiksi joissakin tiukan tyyppisissä kielissä voit lisätä vain kaksi kokonaislukua tai kaksi liukulukua, mutta ilmoittaa virheestä, jos yrität lisätä kokonaisluku kellukkeeseen. Muilla kielillä, jos lisäät kokonaisluvun kellukkeeseen, se saattaa implisiittisesti muuntaa kokonaisluvun floatiksi ja suorittaa sitten lisäyksen.

C ++ on jossain keskellä. C ++: ssa se sallii joitain implisiittisiä konversioita. C: llä ja C ++: lla on pari porsaanreikää. Ensinnäkin sitä kutsutaan valu. Casting tarkoittaa periaatteessa kääntäjän kertomista muuttujalle ”tämän tyyppiseksi” ilmoitetun arvon sijaan. Esimerkiksi yllä olevassa esimerkissä, jos haluamme, että kelluketta käsitellään int, voimme heittää kellukkeen int: iin.

Esimerkki: int x, a; kellua y, b;

b = x + y;

a = x + (int) y; tai haluat ehkä a = (int) (x + y);

Koska osoittimet kirjoitetaan yleensä, voimme käyttää castingia tekemään yhden rakenteen näyttämään toisen tyyppiseltä.

typedef struct {/ * jäsenet * /} A;

typedef struct {/ * jäsenet * /} B;

A kirves;

B * bp;

bp = &ax; // Virhe: erityyppisiä osoittimia!

bp = (B *) &ax; // määrittelee tehokkaasti peitteen A B: n kanssa kuin liiton.

Osoittimilla on myös tyhjiö *, joka on jokerimerkki. Sallii käytön missä tahansa osoitintyypissä sallitaan tällaiset mem-tyyppiset toiminnot, esim. memcpy.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *