Podczas czytania o typach danych często używa się terminu „definicja typu” bez wcześniejszego wyjaśnienia, co to znaczy.
Na przykład: w https://en.wikipedia.org/wiki/Type_system mamy zdanie „… ponieważ C ++ ma silniejsze reguły dotyczące definicje typów …”
Wszelka pomoc w wyjaśnieniu różnicy między, na przykład, typ i definicja typu jest bardzo ceniona!
Komentarze
- Czy wiesz, co to jest typ ? Następnie definicja typu jest, jak sugeruje termin, definicją typu. ' Nie jestem pewien, jakie jest Twoje prawdziwe pytanie.
Odpowiedź
„Definiowanie” typu to czynność polegająca na budowaniu nowego typu składającego się z jednego lub więcej istniejących typów danych. Na przykład typ „liczby zespolonej” jest często deklarowany jako uporządkowana para „liczb rzeczywistych”:
Type Complex Real a Real b End
a i b to części rzeczywiste i urojone .
Ten przykład pseudokodu to „Definicja typu”.
Komentarze
- Nie ' nie sądzę, że właśnie o to ' jest pytanie … Definiowanie abstrakcyjnego typu danych jest oczywiście definicją typu, ale nie ma to nic wspólnego z silnym lub słabe pisanie (część pytania)
Odpowiedź
Z „Języka programowania C ++” – autor: Bjarne Stroustrup twórca C ++.
Typ definiuje zbiór możliwych wartości i zestaw operacji (dla obiektu).
Również poniższe definicje są powiązane z typem zaczerpniętym z tej samej książki
Deklaracja jest instrukcją który wprowadza nazwę do programu typ dla nazwanej jednostki
Obiekt to pamięć, która przechowuje wartość pewnego typu.
Wartość to zestaw bitów interpretowanych zgodnie z typem.
Zmienna to nazwany obiekt
Komentarze
- To nie ' nie wspominaj o definicji typu .
Odpowiedź
Zmienne mogą zawierać różne rodzaje wartości, np. Liczby całkowite, liczby rzeczywiste, znaki… Nazywa się to TYPEM zmiennej. Niektóre języki są wpisywane dynamicznie. Oznacza to, że interpreter lub kompilator decyduje o typie zmiennej za Ciebie. W językach z typowaniem statycznym musisz samodzielnie zdefiniować typ podczas deklarowania zmiennej. To jest DEFINICJA TYPU.
W językach statycznych z silną typizacją reguły zabraniają mieszania różnych typów. jeśli chcesz dodać, na przykład, liczbę rzeczywistą i liczbę całkowitą, musisz jawnie rzutować liczbę całkowitą na rzeczywistą.
W słabo typizowanym języku możesz mieszać typy. ale ponieważ wzorce bitowe niskiego poziomu różnią się między typami, możesz mieć niepożądane wyniki.
Większość języków jest gdzieś pomiędzy. Będzie jasne, że niepożądane efekty są niedopuszczalne, podczas gdy potrzeba jawnego rzutowania powoduje, że kod jest ciężki. Dlatego większość kompilatorów wykona niejawne rzutowanie dla niektórych standardowych operacji. Dodanie liczby rzeczywistej i całkowitej w takim przypadku niejawnie sprowokuje rzutowanie na rzeczywiste.
Komentarze
- Co to jest " pe " ? Poza tym nie ' nie widzę, jak to, co ' napisałeś po pierwszym akapicie, odnosi się do pytania.
- @ David: pe = exempli gratia = Dla przykładu = na przykład … Zdanie " … ponieważ C ++ ma silniejsze reguły dotyczące definicji typów … " pokazuje moim zdaniem, że pytanie jest zadawane w kontekście słabego i mocnego pisania.
- Aha – że ' s " np. ", po angielsku – zredagowane.
- rzeczywiście tak jest. mój błąd.
- Ta odpowiedź pokazuje szereg poważnych nieporozumień dotyczących typów i systemów typów. Praktycznie każde zdanie tej odpowiedzi jest niepoprawne, mylące lub wprowadzające w błąd. Na początek systemy typów to nie tylko zmienne:
3+'a'
nie ' nie obejmuje żadnych zmiennych, ale zostanie sprawdzony typ. Dynamicznie " wpisano " implementacje języków nie ' t " zdecyduj " rodzaj czegokolwiek. Niejawne konwersje nie ' nie sprawiają, że język jest bardziej " dynamicznie " lub słabo " wpisane.Ogólnie rzecz biorąc, statyczne i dynamiczne " wpisywanie " nie są przeciwległymi końcami widma, ale po prostu mówią całkowicie o różnych rzeczach.