Types de conversion




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, ou plus précisément classique opération. En bref, et en russe: Type de conversion – il est considéré comme une indication d'un ensemble d'octets ordinateur entier ou réel. 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, et lieux des données qui stocke 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, il est converti. 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:

Le résultat sera toujours le nombre 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:

Types de conversion
3.7 (73.33%) 3 votes

7 réflexions sur "Types de conversion

  1. Cette leçon n'est pas clair, de réécrire cet article court dans une langue plus compréhensible:(

    1. Plus clairement de quelle façon?
      Type de conversion, car l'exécution à un niveau bas et dépend en général très bien sur l'optimisation du compilateur.
      Par ailleurs la conversion de type est très vaste zone et dépend (peut dépendre) des tâches elles-mêmes, dans lequel la transformation est appliquée.

      1. > Conversion de type après l'exécution faible
        1. Types de conversion ne le font pas “travail” – aucune action est prise, nous indiquons simplement de considérer les données d'élément dans le format d'un type de données.

        > tout dépend beaucoup sur l'optimisation du compilateur.
        2. Il ne dépend pas du tout sur le compilateur. typification – il est purement notion syntaxique de C ++ – pour la surveillance et la vérification dans le texte. Après avoir compilé tous les types d'information est complètement perdu.

  2. Le type de données de l'objet (comme un nom dans la langue) détermine quelles actions (verbe dans la langue) peut être appliqué à l'objet.
    par exemple, type – “pomme”, il peut être: manger, à sécher, etc..
    Mais si vous convertissez au type de “balle”, alors il est possible de jouer au football … mais il ne peut pas manger.

    1. Ceci est une fausse déclaration, car après typecast la valeur de leurs propriétés ne change pas.

      Mais je ne vois aucune raison de faire valoir – Le débogueur jugera tous, qui veut que son aide est de connaître la vérité.

      1. > car après typecast la valeur de leurs propriétés ne change pas.

        Vous écrivez un non-sens, ne confondez pas l'adolescence…
        unsigned long ul = 1234;
        – transformer:
        char * pc = ++(carboniser*)la;
        combien coûteront? … correctement ;-) = 1235
        – transformer:
        ps = courte * ++(court*)la;
        combien coûteront? … correctement ;-) = 1236
        – transformer:
        uint32_t * pi = ++(uint32_t *)la;
        combien coûteront? … correctement ;-) = 1238
        etc.

  3. 1) Type de conversion à titre d'exemple d'un matériau et peut fonctionner au niveau du processeur et le module de calcul.

    2) La frappe est non seulement une “notion”, et certainement pas seulement pour le contrôle de, qui, en C comme rire de chat. Et même si les informations de type ne sont pas stockées dans un fichier exécutable, seule question, traiter par le processeur indique clairement le type que ce soit un pointeur vers un réel ou ASCIIZ, ou un pointeur vers l'interface.

Laisser un commentaire

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *