conversion C du type de données


Lorsque l'ordinateur exécute une opération arithmétique, chaque type nécessite opérandes ont la même taille (nombre de bits stocké) et de stockage, ne sera pas le type char (1 octet) Type de données int (2, 4 ou 8 octets) de données directement impliquées opération, en raison des différentes façons de stockage, ni peut un int et double des données directement impliquées dans le calcul.

Cependant, en raison de la flexibilité de la langue C, dans une expression ou une déclaration, ce qui permet différents types de données opération de mélange.

Flexibilité mécanique du langage informatique C est une contradiction, comme les mauvais traitements, produira des résultats erronés. Peut être effectuée implicitement automatiquement pour certains types de compilateur convertisseurs, sans intervention de programmeur, appelé la conversion à la conversion automatique , et un certain type de conversion nécessite le programmeur de spécifier explicitement ce type de conversion est appelé cast .

Une conversion de type automatique

Une opération de mélange entre différents types d'expression se produit, le bas de type automatique de type de conversion plus élevé.

Les différences entre les différents types de données que la portée et la précision des données, en général, plus la plage des données, plus la précision, plus le type « High ».

niveau de type entier de bas en haut comme suit:

signé char-> non signé char-> court> non signé à court> int> unsigned int> long> unsigned long

Niveau à flotteur de bas en haut comme suit:

en fonction du flottant> doubles

Nous flottons de type virgule flottante est dépréciée, alors ne parlons pas.

1, il n'y a pas de données d'opérande en virgule flottante

Lorsque le char, unsigned char, court ou court non signé se produit dans le calcul impliqué dans l'expression, généralement converties automatiquement de type int.

unsigned int int lorsque l'opération de mélange, de type int automatiquement converti en unsigned int.

int, unsigned int et une longue durée de fonctionnement de mélange, sont convertis en type long.

2, les opérandes à virgule flottante données

Lorsque le nombre de données à virgule flottante contenues dans l'opération, les deux opérandes sont convertis à doubler.

Par exemple:

int ii=100;
double dd=200.5;
ii+dd;

Les expressions arithmétiques décrits ci-dessus dd opérande en tant que double, il est tout d'abord converti en un double flotteur participation ii après l'opération, le résultat de calcul à double virgule flottante de précision est 300,5.

3, les deux types de incompatible opération d'affectation de symbole

Lorsque la valeur correcte est l'opérateur d'affectation (qui peut être constante, variable ou expression) est incompatible avec le type de type de valeur à gauche et le type de valeur droite levage / abaissement vers la gauche du type de valeur. Par exemple:

double dd;
dd=10;  // 右值为双精度,左值为整数

Depuis la lvalue dd double précision à virgule flottante, afin de mettre la valeur juste après la constante entier 10 promu à virgule flottante à double précision, puis affecté à dd, non seulement la précision mais ne perd jamais une précision améliorée.

int ii;
ii=10.5;   // 右值10.5为双精度,左值为整型

10,5 rvalue à double valeur entière de réduction à la gauche, à savoir la partie décimale est mis au rebut 10,5, 10 attribué à des variables entières II, cette situation va perdre en précision.

4, les valeurs gauche et droite au-delà de la gamme d'un type de valeur

Pire cas, la plage de l'opérateur d'affectation au-delà des valeurs de gauche et de droite représentent la plage de valeurs du type, dont la valeur coupera le droit, la valeur attribuée à la gauche. Les résultats peuvent être dénué de sens. Par exemple:

char c;             //  char占8位,取值范围是-128-127。
c=1025;             //  整数1025 对应二进制形式是100 0000 0001,超出了8位。
printf("%d",c) ;  //  以十进制输出c的值

La sortie est 1, depuis la prise seulement les 8 bits inférieurs 1025 0000 0001 (valeur de 1) attribués à la variable caractère C, pour obtenir un sens de valeur.

En second lieu, le casting

Bien que la conversion automatique sans intervention manuelle, facile à utiliser, mais il y a des avantages et des inconvénients, en particulier lorsque le type automatique est converti d'un niveau supérieur à un type de conversion de type inférieur, seront retranchés ou réduire la précision des données, ne peut pas être obtenu le résultat escompté.

Fournir plus d'autorité de contrôle aux concepteurs de conversion de type de programme pour rendre la programmation plus flexible, objet de la conversion plus claire, le langage C fournit la syntaxe peut spécifier explicitement le type de conversion, communément appelée fonte.

Format Casting:

(目标类型) 表达式;

Par exemple:

int a,b;
a=4;
b=3;
double dd;
dd=a/b;            // dd的结果将是1。
dd=(double)(a/b);  // dd的结果是1.000000。
dd=(double)a/b;   // dd的结果是1.333333

dd = a / b, dd résultat est 1, cela est bien entendu que, comme un nombre entier ou une division entière de nombre entier, sans partie décimale.

dd = (double) (a / b), résultat dd est 1.000000, le difficile à comprendre, son processus de fonctionnement est le suivant:

(1) un premier calcul a / b, le résultat est un nombre entier de 1;

(2) pour convertir un nombre entier de doubler, il est 1,000000.

dd = (double) a / b, dd 1,333333 conséquent, cela ne soit pas bien comprise, son processus de fonctionnement est le suivant:

(1) la première exécution (double) a, pour convertir un double, à savoir, 4,000000;

(2) divisée par 3 à 4,00000, 1,333333 obtenu, conforme aux règles de conversion de type automatique.

Il y a aussi un problème, les programmeurs ne sont pas savoir (double) une priorité ou une priorité / b, la meilleure façon est écrit comme ((double) a) / b, donc il ne fait aucun doute.

En troisième lieu, les devoirs

Ecrire le programme d'échantillonnage, cette section décrit la connaissance de tous à nouveau la démo, le programme de démonstration peut approfondir votre compréhension et de la cartographie.

En quatrième lieu, l'avis du droit d'auteur

C Langue Network Technology article original, reproduit s'il vous plaît indiquer le lien source pour l'article, l'auteur et original.
Source: C Langue Technology Network (www.freecplus.net)
Auteur: Code d' éthique de l' agriculture

Si les fautes de frappe de l'article, ou des erreurs de contenu ou d'autres suggestions et commentaires, veuillez message Reprenez-moi, je vous remercie beaucoup! ! !

Publié un article original · louange gagné 2 · Vues 6733

Je suppose que tu aimes

Origine blog.csdn.net/u010806950/article/details/105043999
conseillé
Classement