[Powered by Google Translate] JORDANIE JOZWIAK: Type de coulée, dans le sens le plus simple, est un moyen de modifier l'interprétation d'un ordinateur de certaines données par implicitement ou explicitement, changeant son type de données. Telles que la modification d'un int à un flotteur, ou vice versa. Pour comprendre la conversion de type, nous avons besoin de Commençons par les bases - types de données eux-mêmes. Dans les langages de programmation tels que C, toutes les variables ont une sorte de type de données qui détermine le mode de l'ordinateur, et également l'utilisateur, interprète cette variable. Types de données numériques comme un int, long long, float et double, ont tous leurs propres caractéristiques uniques et sont utilisé pour spécifier les valeurs de différentes gammes et de précision. Transtypage nous permet de prendre un nombre à virgule flottante comme 3,14 et obtenir la partie avant la virgule, 3 dans ce cas, en le jetant sur un int. Prenons un exemple tiré de la langue anglaise pour une brève l'examen des types, et de voir comment la conversion de type peut changer la façon dont nous interprétons un morceau de données. Pour les données, nous allons prendre les symboles ici. Je viens de faire référence à ces lignes soigneusement configurés comme symboles, mais comme quelqu'un qui connaît la langue anglaise, vous immédiatement reconnaître qu'ils sont, en fait, des lettres. Vous implicitement compris le type de données. En regardant cette chaîne de lettres, nous pouvons voir deux mots différents, chacun avec sa propre signification. Il ya le nom, le vent, comme dans les coups de vent à l'extérieur. Et il ya le verbe, le vent, comme dans J'ai besoin de remonter ma montre analogique. Ceci est un exemple intéressant, parce que nous pouvons voir comment le type que nous attribuons à nos données, que ce soit substantif ou verbes, change la façon dont nous utilisons ces données - comme le vent mot ou le vent. Même si un ordinateur ne se soucient pas de la grammaire et des pièces d'expression anglaise, le même principe de base s'applique. Autrement dit, nous pouvons changer l'interprétation exacte de l' les mêmes données stockées dans la mémoire par une simple coulée à une type différent. Voici les tailles des types les plus communs sur un 32-bit le système d'exploitation. Nous avons un char à 1 byte, int et float à 4 octets, un long de long et un double de 8 octets. Parce qu'un int occupe 4 octets, il faudra jusqu'à 32 bits quand il est stocké dans la mémoire comme une série binaire de zéros et de uns. Tant que notre variable reste comme un type int, le ordinateur sera toujours convertir les uns et de zéros de binaire dans le numéro d'origine. Cependant, nous pourrions théoriquement jeter ces 32 bits en une série de types booléens. Et puis l'ordinateur ne serait plus voir un certain nombre, mais au lieu d'une collection de zéros et de uns. On pourrait aussi essayer de lire ces données comme une valeur numérique différente taper, ou même comme une chaîne de quatre caractères. Lorsque vous traitez avec des numéros de coulée, vous devez tenir compte la précision de votre valeur sera affectée. Gardez à l'esprit que la précision peut rester le même, ou vous pouvez perdre en précision, mais vous ne pouvez jamais gagner en précision. Passons en revue les trois façons les plus courantes que vous pouvez une perte de précision. Jetant un flotteur à un int provoque la troncature de tout après la virgule, de sorte que vous êtes de gauche avec le nombre entier. Si nous prenons le x flotteur qui sera égal à 3,7, nous pouvons jeter cette variable x de type int int en écrivant simplement dans parenthèses. Chaque fois que nous utilisons ce terme ici, nous allons effectivement utiliser la valeur de trois parce que nous avons tronqué tout après la virgule. Nous pouvons également convertir un long long en int, qui sera même conduire à une perte de bits d'ordre supérieur. Un long long prend 8 octets, ou 64 bits en mémoire. Ainsi, lorsque nous le jeter à un int qui ne dispose que de 4 octets, ou 32 bits, nous sommes essentiellement coupant tous les morceaux que représentent les valeurs binaires plus élevés. Vous pouvez aussi jeter un double à un flotteur, ce qui donnera vous le flotteur le plus proche possible de la double sans nécessairement arrondissant. Semblable à notre long long int à la conversion, la perte de C'est parce que la précision d'un double contient plus de données. Un double vous permettra de stocker 53 bits significatifs, environ 16 chiffres significatifs. Alors qu'un flotteur ne vous permettent de stocker 24 bits significatifs, environ sept chiffres significatifs. Dans ces deux derniers cas, il peut être utile de penser à taper coulée que le redimensionnement d'une photo. Lorsque vous passez d'une grande taille d'une petite taille, vous ne pouvez pas voir les choses aussi clairement que vous avez perdu des données sous la forme de pixels. Conversion de type peut également causer des problèmes lorsque nous ints jeté à flotteurs. Depuis flotte sur une machine 32-bit seulement ont 24 bits significatifs, ils ne peuvent pas représenter avec exactitude les valeurs plus de 2 à la puissance de 24, ou 16777217. Maintenant, nous allons parler de cast explicite et implicite. Conversion explicite, c'est quand nous écrivons le type entre parenthèses devant un nom de variable. A titre d'exemple, nous avons écrit avant int entre parenthèses avant notre float x variables. De cette façon, nous obtenons la valeur int, le valeur tronquée de 3,7 - 3. Transtypage implicite est lorsque le compilateur change automatiquement types similaires à un type super, ou effectue une autre sorte de coulée sans que l'utilisateur d'écrire code supplémentaire. Par exemple, lorsque nous ajoutons 5 et 1.1, nos valeurs ont déjà types qui leur sont associés. La figure 5 est un int, alors que 1.1 est un flotteur. Afin de les ajouter, l'ordinateur lance 5 dans un flotteur, ce qui aurait été la même chose que l'écriture 5,0 dans le la première place. Mais de cette façon que nous disons flotteur 5 ou 5.0, ainsi que ce qui était déjà un flotteur, 1,1, et de là, nous pouvons ajouter ces valeurs et obtenir la valeur 6.1. Transtypage implicite nous permet également d'affecter des variables de types différents les uns des autres. On peut toujours attribuer un type moins précis dans un plus unique précis. Par exemple, si nous avons un x double, et un y int - et ceux-ci pourraient avoir les valeurs que nous leur fixées à - nous pouvons dire x est égal à y. Parce que le double est plus précis qu'un int, afin que nous ne perdre aucune information. D'autre part, il ne serait pas nécessairement correct de dire y est égal à x, car la double peut avoir une valeur plus grande que le nombre entier. Et si l'entier pourrait ne pas être en mesure de tenir tous les les informations stockées dans le double. Transtypage implicite est également utilisé dans les opérateurs de comparaison, comme supérieur à, inférieur à, ou de l'opérateur d'égalité. De cette façon, nous pouvons dire si 5.1 est supérieur à 5, et nous obtenons le entraîner vrai. Parce que 5 est un int, mais ça va être converti en un flotteur pour être comparé au flotteur 5.1, nous dirions 5.1 est supérieur à 5,0. Le même est vrai de dire si 2,0 est égal à égal à 2. Nous aimerions également obtenir vrai, parce que l'ordinateur va lancer le entier de 2 à flotter et ensuite dire 2,0 est égale à égale 2,0, cela est vrai. N'oubliez pas que nous pouvons également effectuer des conversions entre entiers et les caractères, ou des valeurs ASCII. Chars doivent également être réduite en binaire, c'est pourquoi vous pouvez facilement convertir entre les caractères et leurs respectives Valeurs ASCII. Pour en savoir plus à ce sujet, consultez notre vidéo sur l'ASCII. Lorsque vous prenez un moment pour réfléchir à la façon dont les données est stocké, il commence à faire beaucoup de sens. C'est comme la différence entre l'énergie éolienne et l'énergie éolienne. Les données sont les mêmes, mais le type ne peut changer la façon dont nous l'interpréter. Mon nom est Jordan Jozwiak, ce CS50.