Conversion-Typen




Typumwandlung c ++, für Anfänger, für Dummies, von Grund auf neu, c ++ Programmierung GrundlagenTypumwandlung in C ++ eher alt, или точнее классическая операция. Если вкратце и по-русски: Konvertierungsart – это указание компьютеру считать некий набор байтов целым или вещественным. Oder ein Zeiger auf eine bestimmte Klasse.

allgemein, die Typumwandlung zu verstehen ist notwendig, den Mechanismus und die Struktur Variablen zu berücksichtigen. Z.B, nAC-Leitung ganzzahligen Vielfachen: short int, int, long int, nicht mitgerechnet die unsigned. Und Computer Orte für sie eine unterschiedliche Anzahl von Speicherzellen (Byte): 1, 2 und 4 beziehungsweise. Rechnen Sie in dieser Art von einer Klasse wird der Standard-Konvertierung genannt. bei:

Nehmen Sie die nächste: nehmen Sie die beiden jüngeren Byte einer Variablen "A", einfach in zwei Bytes variabler transplantierten «b». Da der Wert in und (Einheit) Es ist derzeit in diesen beiden Bytes platziert, das Programm wird das richtige Ergebnis geben, und C ++ wird nicht gegen eine solche Umwandlung.

Warum muss ich die Größe der Variablen in der Umsetzung zu berücksichtigen?

Was passiert, wenn Sie in einer Variablen setzen "A" Anzahl 123456789? Es ist perfekt in 4 Byte-Typ int, aber 2 Byte-Typ short int es fällt nicht mehr. zu viel. C ++, wie erwartet, es schneidet nur die lange Reihe, nur den Schwanz davon nehmen, und in eine Variable «b». Wir bekommen natürlich Unsinn. Und mit einem Minus, wenn Sie es auf den Bildschirm bringen. Konvertieren von der Variablen, die belegt eine größere Anzahl von Bytes in dem Speicher wird nicht korrekt sein. Wenn Sie wandeln das Gegenteil von dem kurz in lange solche Probleme zum Beispiel wird nicht, weil die Bytes in dem variablen Empfänger länger, и места для данных которые хранит kurz genug.

Es ist notwendig zu wissen,. Lehrer fangen oft Studenten auf diesem Fokus, vor allem in der Trainingshandbuch eine ähnliche pitfall mit variabler schlecht miteinander kompatibel in der Größe geben.

Was die Arten von realen Umwandlung, Es ist in einem mathematischen Coprozessor beschäftigt. Es ist nicht mehr nur die Bytes von Zelle zu Zelle destilliert, und speziellen Anweisungen ausgeführt,, die wandeln das ganze in eine Art von Material mit einer Mantisse und Exponent, wie es sein sollte, und Rückgabewert. Dies ist kein Umwandlungs, это именно конвертация. Auf jeden Fall, Es wird mit dem Prozessor beschäftigen.

In diesem Beispiel ist der mathematische Co-Prozessor wandelt die realen ganzzahligen, und wird auf eine variable Antriebs, und führen Sie dann den Rückwärtsbetrieb: Es wird eine ganze in seinem speziellen Register fahren (Er rief ST), und nachdem er von einem echten Bestandteil erhalten, gleich jener, Variable, “und”.

Wenn Sie von einem echten zu konvertieren doppelt (8 Byte) in schweben (4 Byte), hier solche Probleme, als Ganzes nicht sein wird, eine. Math Coprozessor runden nur bis zum realen Wert, passt in 4 Byte, das nicht auf einen falschen Wert führen:

Результатом все равно будет число 1.234568e+18, was bedeutet, eine 1,2-plus 18 Grad. Eine andere Sache,, in “ein” es wird auf die Anzahl der sechsten Dezimalstelle gerundet werden, Statt 1.234567891234566e + 18. Im Allgemeinen ungenaue Berechnungen nicht stört es nicht, aber es wird empfohlen, das Programm-Material von der gleichen Art zu verwenden,, dass nicht auch hier passieren solche Rundung.

Neben der Art der Transformation gibt es so etwas wie die Besetzung.

Sichtbarkeit Typumwandlung kann ein solches Beispiel zeigen:

Wenn die Umwandlung – diese Entscheidung C ++ (oder eher Compiler), in welche Art von Ergebnis, verwendet es eine Art Guss, starr vom Programmierer spezifiziert. In diesem Beispiel zeigt der Programmierer dem Compiler, Sie müssen es in einen umwandeln int, aber nicht in short int. Immerhin 25 und platziert in int und kurz, dass wählt der Compiler Programmierer nicht wissen.

Im Alltag solche Typkonvertierungen eigentlich selten. Und es ist nicht notwendig,. Die Ideologie der Programmierung in einem Wohn Hinweise solche Schnörkel zu vermeiden, weil sie eine Harke sein (in dem obigen Beispiel bei der Umwandlung von ganzen), Daher wirft in C ++ sollte nicht überall eingesetzt werden.

:) Vielen Dank für diesen Artikel sein Autor Stilet – Super Moderator Programmierer offline ProgrammersForum.

Newsletter neue Lektionen über die Programmierung:


Ich bin damit einverstanden, Nachrichten zu empfangen von purecodecpp.com auf meine E-Mail

Datum
Seite
Conversion-Typen
Wertung
5

7 Gedanken zu "Conversion-Typen

  1. Этот урок совсем не понятный, переписать бы эту статейку на более понятный язык:(

    1. Более понятный в каком плане?
      Преобразование типов ведь работает на низком уровне и вообще зависит очень сильно от оптимизации компилятора.
      Более того преобразование типов очень обширная область и зависит (может зависеть) от самих задач, где применяется преобразование.

      1. > Преобразование типов ведь работает на низком уровне
        1. Преобразования типов вообще неработают” – никаких действий не производится, мы просто указываем рассматривать элемент данных в формате какого-то из типов данных.

        > вообще зависит очень сильно от оптимизации компилятора.
        2. Никак не зависит вообще от компилятора. Типизацияэто сугубо синтаксическое понятие C++для контроля и проверок в тексте. После компиляции вся информация о типах полностью теряется.

  2. Тип объекта данных (это как существительное в языке) определяет какие действия (глагол в языке) можно применять к объекту.
    beispielsweise, тип – “яблоко”, его можно: съесть, засушить и т.д.
    Но если вы преобразуете его в типмяч”, то ним можно играть в футболно его уже нельзя съесть.

    1. Это ложное утверждение, поскольку после приведения типа значение своих свойств не меняет.

      Впрочем не вижу смысла споритьОтладчик все рассудит, кто захочет с его помошью вполне узнает истину.

      1. > поскольку после приведения типа значение своих свойств не меняет.

        Вы пишете ерунду, не смущайте юношество
        unsigned long ul = 1234;
        преобразуем:
        char *pc = ++(verkohlen*)ul;
        сколько станет? … правильно ;-) = 1235
        преобразуем:
        short *ps = ++(short*)ul;
        сколько станет? … правильно ;-) = 1236
        преобразуем:
        uint32_t* pi = ++(uint32_t*)ul;
        сколько станет? … правильно ;-) = 1238
        usw.

  3. 1) Преобразование типов на примере целого и вещественного может работать на уровне процессора и его математического модуля.

    2) Типизация это не простопонятие”, и уж точно не только для контроля, которого в Си как кот наплакал. И даже если информация о типах не хранится в экзешнике, само значение, обрабатываемое процессором однозначно указывает на его тип будь то указатель на ASCIIZ или вещественное, или указатель на интерфейс.

Hinterlasse eine Antwort

Platz Code in Tags: <pre class="lang:c ++ dekodieren:true ">DEIN CODE</Vor>