[Powered by Google Translate] JORDAN Jozwiak: Type Casting, im einfachsten Sinne ist ein
Weg zu einem Computer-Interpretation einiger Daten verändern
implizit oder explizit Änderung seiner Datentyp.
Wie das Ändern einer int zu einem float, oder umgekehrt.
Um Typumwandlung zu verstehen, müssen wir
Beginnen wir mit den Grundlagen -
Datentypen sich.
In Programmiersprachen wie C, müssen alle Variablen eine Art
der Daten-Typ, wie der Computer, und ebenfalls ermittelt
der Benutzer, interpretiert diese Variable.
Numerische Datentypen wie int, long long, float und
Doppel, haben alle ihre eigenen einzigartigen Eigenschaften und sind
verwendet, um Werte unterschiedlicher Bereiche und Genauigkeit festzulegen.
Typ-Umwandlung ermöglicht es uns, eine Gleitkommazahl nehmen wie
3,14 und erhalten den Teil vor dem Komma, 3 in diesem Fall
durch Gießen es zu einem int.
Nehmen wir ein Beispiel aus der englischen Sprache für einen kurzen
Bewertung von Typen, und um zu sehen, wie Typumwandlung können
die Art und Weise interpretieren wir ein Stück von Daten.
Für Daten, lassen Sie die Symbole hier.
Ich habe gerade diesen sorgfältig konfiguriert Linien wie beziehen
Symbole, sondern als jemand, der die englische Sprache kennt,
erkennt man sofort, dass sie in der Tat, Briefe.
Sie implizit verstanden den Datentyp.
Mit Blick auf diese Zeichenfolge aus Buchstaben können wir sehen, zwei
anderen Worten, jede mit ihrer eigenen Bedeutung.
Es ist das Substantiv, Wind, wie in den Wind draußen.
Und es gibt das Verb, Wind, wie in I zu müssen
wickeln meiner analogen Uhr.
Dies ist ein interessantes Beispiel, weil wir sehen können
wie die Art, dass wir unsere Daten zuordnen, ob Substantiv oder
Verb, Veränderungen, wie wir diese Daten verwenden -
wie das Wort Wind oder Wind.
Obwohl ein Computer nicht über Grammatik und Teile kümmern
der englischen Sprache, gilt das gleiche Prinzip.
Das heißt, können wir die Interpretation der genaue
gleichen Daten im Speicher abgelegt einfach Gießen, dass es ein
anderen Typs.
Hier sind die Größen der häufigsten Arten auf einem 32-Bit-
Betriebssystem.
Wir haben eine char bei 1 byte, int und float bei 4 Bytes, eine lange
lang und ein Doppel mit 8 Byte.
Da ein int belegt 4 Byte, wird es dauern, bis 32 Bit
wenn im Speicher als eine binäre Reihe gespeicherten
von Nullen und Einsen.
Solange unsere variable bleibt als Typ int, der
Computer werden immer wandeln diese Einsen und Nullen aus
binär in der ursprünglichen Anzahl.
Allerdings könnten wir theoretisch gegossen jene 32
Bits in eine Reihe von Booleschen Typen.
Und dann würde der Computer nicht mehr sehen eine Reihe, aber
stattdessen eine Reihe von Nullen und Einsen.
Wir könnten auch versuchen, diese Daten als eine andere numerische lesen
geben, oder sogar als eine Folge von vier Zeichen.
Beim Umgang mit Zahlen in Gießen, müssen Sie überlegen, wie
die Genauigkeit Ihrer Wert wird betroffen sein.
Beachten Sie, dass die Präzision kann die gleiche bleiben,
oder Sie können zu verlieren Präzision, aber man kann nie gewinnen Präzision.
Lassen Sie durchlaufen für die drei häufigsten Arten, dass man
Verlust der Genauigkeit.
Casting a float in int verursachen Abschneiden alles
nach dem Komma, so dass Sie nach links
mit der Ganzzahl.
Wenn wir die float x, 3,7 gleich stattfinden wird, können wir gegossen
Diese Variable x zu einem int durch einfaches Schreiben int in
Klammern.
Immer, wenn wir diesen Begriff mit der rechten hier, wir effektiv
werden mit dem Wert drei, weil wir abgeschnitten haben
alles nach dem Komma.
Wir können auch eine lange, lange auf einen int, was wird
ähnlich zu einem Verlust von Bits hoher Ordnung führen.
Eine lange lange dauert bis 8 Byte bzw. 64 Bit im Speicher.
Wenn wir also warf sie in einen int, der nur 4 Bytes oder 32
Bits, sind wir im Wesentlichen Abhacken alle Bits,
stellen die höheren binären Werten.
Sie könnten auch warf einen Doppel mit einem Schwimmer, die geben
Ihnen die größtmögliche float der doppelten ohne
zwangsläufig Rundung.
Ähnlich wie unsere long long nach int Umwandlung der Verlust in
Präzision ist da eine doppelte enthält mehr Daten.
Ein Doppelklick können Sie 53 Bits zu speichern,
rund 16 signifikanten Ziffern.
Während ein Schwimmer können Sie nur bis 24 zu speichern
Bits, etwa sieben signifikanten Stellen.
In den letzten beiden Fällen kann es hilfreich sein, zu denken
Typumwandlung wie Größenänderung ein Foto.
Wenn Sie von einer großen Größe gehen auf eine kleine Größe, können Sie nicht sehen
Dinge so klar, weil man verlorene Daten
in Form von Pixeln.
Typ-Umwandlung kann auch Probleme verursachen, wenn wir
gegossen ints zu Schwimmern.
Da schwimmt auf einer 32-Bit-Rechner haben nur 24
Bits, können sie nicht genau darzustellen Werte
über 2 zur Leistung von 24 oder 16777217.
Lassen Sie uns nun über explizite und implizite Casting sprechen.
Explizite Umwandlung ist, wenn wir die Art in Klammern schreiben
vor einem Variablennamen.
Als ein Beispiel, bevor wir schrieben int in Klammern vor unseren
float Variable x.
Auf diese Weise erhalten wir die int-Wert, desto
abgeschnittenen Wert von 3,7 -
3.
Implizites Casting ist, wenn der Compiler automatisch
ähnliche Arten zu einem super Typ, oder führt eine andere Art von
Gießen ohne dass der Benutzer zu schreiben
keine zusätzlichen Code.
Zum Beispiel, wenn wir 5 und 1,1 hinzuzufügen, unsere Werte haben bereits
Typen mit ihnen verbunden sind.
Die 5 ist ein int, während 1,1 ist ein Schwimmer.
Um sie hinzuzufügen, wirft der Computer 5 in einen Schwimmer,
welche wäre das gleiche wie das Schreiben 5,0 in der haben
ersten Platz.
Aber diese Art, wie wir sagen, Schwimmer 5 oder 5,0, plus, was bereits
ein Schwimmer, 1,1, und von dort können wir tatsächlich fügen Sie diese
Werte und erhalten den Wert 6,1.
Implizites Casting erlaubt uns auch, Variablen zuweisen
verschiedene Arten zueinander.
Wir können immer weisen eine weniger genaue Art in eine
präzise ein.
Zum Beispiel, wenn wir einen double x, und ein int y -
und diese könnten keine Werte, die wir setzen sie um -
können wir sagen, x gleich y.
Da das Doppel mehr Präzision als ein int hat, so dass wir
verlieren keine Informationen.
Andererseits wäre es nicht unbedingt korrekt zu sagen
y gleich x, weil die doppelte einen größeren Wert als haben könnte
die Ganzzahl.
Und so ist die Zahl möglicherweise nicht in der Lage, alle halten
Informationen in dem doppelten gespeichert.
Implizites Casting ist auch im Vergleich Operatoren wie verwendet
größer als, kleiner als oder des Gleichheits-Operators.
So können wir, wenn 5,1 sagen kann, ist größer als 5, und wir bekommen die
Ergebnis true.
Da 5 ist ein int, aber es wird mit einem Schwimmer gegossen werden, um
mit dem Schwimmer 5,1 verglichen werden, würden wir sagen, 5,1 ist
größer als 5,0.
Das gleiche gilt zu sagen, wenn 2,0 entspricht gleich 2 wahr.
Wir würden auch zu wahr, weil der Computer warf der
Zahl 2 zu schweben und dann sagen 2,0 entspricht gleich 2,0,
dies wahr ist.
Vergessen Sie nicht, dass wir auch zwischen ints und chars gegossen,
oder ASCII-Werte.
Chars müssen auch auf binäre reduziert werden, weshalb Sie
können leicht zwischen Zeichen und ihrer jeweiligen konvertieren
ASCII-Werte.
Um mehr zu erfahren über diese Besuche unsere Video-on-ASCII.
Wenn Sie einen Moment Zeit nehmen, um darüber, wie Daten gespeichert ist denken,
es fängt an, sehr viel Sinn machen.
Es ist wie der Unterschied zwischen Wind und Wind.
Die Daten sind die gleichen, aber die Art ändern kann, wie wir
interpretieren.
Mein Name ist Jordan Jozwiak diese CS50.