Types de conversion

Noter cet article




conversion de type c ++, pour les débutants, pour les nuls, à partir de zéro, c ++ notions de programmationConversion de type en C ++ plutôt vieux, или точнее классическая операция. Если вкратце и по-русски: Type de conversion – это указание компьютеру считать некий набор байтов целым или вещественным. Ou un pointeur vers une classe spécifique.

généralement, de comprendre la conversion de type est nécessaire de considérer les variables du mécanisme et de la structure. par exemple, nAC entier à plusieurs lignes: short int, int, long int, sans compter le non signé. Et les lieux d'ordinateur pour eux un nombre différent de cellules de mémoire (octet): 1, 2 et 4 respectivement. Convertir dans ces types d'une classe est appelée la conversion standard. à:

Prendre la prochaine: prendre l'octet deux jeunes d'une variable «A», simplement transplanté dans deux octets de la variable «b». Etant donné que la valeur et (unité) il est actuellement placé dans ces deux octets, le programme donnera le résultat correct, et C ++ ne sera pas contre une telle conversion.

Pourquoi ai-je besoin de considérer la taille de la variable dans la conversion?

Qu'est-ce qui se passe si vous mettez dans une variable «A» nombre 123456789? Il est parfaitement adapté à 4 Type d'octet int, mais 2 Type d'octet short int il ne tombe plus. trop. C ++, comme prévu, il coupe tout simplement le nombre de long, en ne prenant que la queue de celui-ci, et le mettre dans une variable «b». On obtient évidemment un non-sens. Et avec un moins, si vous apportez à l'écran. Conversion de la variable, qui occupe un plus grand nombre d'octets dans la mémoire ne sera pas correcte. Si vous convertissez au contraire de la court dans longue par exemple ces problèmes ne seront pas, parce que les octets dans le destinataire variable de plus, и места для данных которые хранит court assez.

Il est nécessaire de connaître. Les enseignants attrapent souvent des étudiants sur ce thème, en particulier dans le manuel de formation donnant un piège similaire avec la variable peu compatibles les uns avec les autres dans la taille.

En ce qui concerne les types de conversion réelle, Il est engagé dans un coprocesseur mathématique. Il n'y a plus seulement les octets distillés de cellule à cellule, et les instructions spéciales sont exécutées, qui convertissent le tout dans un type de matériau ayant une mantisse et un exposant, comme il faut, et la valeur de retour. Ce n'est pas une conversion, это именно конвертация. de toute façon, Elle traitera avec le processeur.

Dans cet exemple, le co-processeur mathématique convertit le réel en entier, et conduira à une variable, et ensuite faire l'opération inverse: Il pilotera l'ensemble dans son registre spécial (Il a appelé ST), et après qu'il obtiendrait d'une véritable partie intégrante, égale à celle, variable “et”.

Si vous voulez convertir un vrai double (8 octet) dans flotte (4 octet), ici, de tels problèmes, dans son ensemble, ne sera pas un. Math coprocesseur arrondir juste à la valeur réelle, tient dans 4 octet, cela ne conduit pas à une valeur incorrecte:

Результатом все равно будет число 1.234568e+18, ce qui signifie un degré 18 1.2-plus. une autre chose, dans “une” il sera arrondi au nombre de la virgule 6, au lieu 1.234567891234566e + 18. En général, les calculs inexacts qu'il ne gêne pas, mais il est recommandé d'utiliser le contenu du programme du même type, cela n'a pas été le cas ici, tels l'arrondissement.

En plus du type de transformation il y a une telle chose comme le casting.

Visibilité typecast peut montrer un tel exemple:

Si la conversion – cette décision C ++ (ou plutôt compilateur), dans ce type de résultat, il utilise une distribution de type, de manière rigide spécifié par le programmeur. Dans cet exemple, le programmateur indique au compilateur, vous avez besoin de le convertir en un int, mais pas en short int. Après tout, 25 et placées dans int et court, qui sélectionne le programmeur du compilateur ne peut pas savoir.

Dans la vie de tous les jours telles conversions effectivement rares de type. Et il est pas nécessaire. L'idéologie de la programmation dans un conseils résidentiels pour éviter ces fioritures, car ils peuvent être un râteau (Dans l'exemple ci-dessus dans la conversion de tout), jette donc en C ++ ne doit pas être utilisé partout.

:) Merci pour cet article son auteur stilet – programmeurs Super Moderator hors ligne ProgrammersForum.

Bulletin de nouvelles leçons sur la programmation:

7 réflexions sur "Types de conversion

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

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

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

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

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

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

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

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

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

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

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

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>