Méthode de conversion de type de données en langage C

藏色散人
Libérer: 2020-02-26 09:31:31
original
8792 Les gens l'ont consulté

Méthode de conversion de type de données en langage C

Méthode de conversion de type de données en langage C

La conversion de type de données consiste à convertir des données (variables, valeurs, expressions résultantes , etc.) d’un type à un autre.

Conversion de type automatique

La conversion de type automatique est une conversion de type de données effectuée de manière silencieuse, implicite et secrète par le compilateur. Cette conversion ne nécessite pas l'intervention du programmeur. se produire automatiquement.

1) La conversion de type automatique se produit lorsqu'un type de données est affecté à un autre type de variable. Par exemple :

float f = 100;
Copier après la connexion

100 est une donnée de type int et doit être convertie en type float. être affecté à la variable f. Autre exemple :

int n = f;
Copier après la connexion

f est une donnée de type float et doit être convertie en type int avant de pouvoir être affectée à la variable n.

Dans l'opération d'affectation, lorsque les types de données des deux côtés du numéro d'affectation sont différents, le type de l'expression de droite doit être converti en type de variable de gauche, ce qui peut entraîner distorsion des données ou précision réduite ; par conséquent, la conversion de saisie automatique n'est pas nécessairement sûre. Les compilateurs donnent généralement des avertissements pour les conversions de types dangereuses.

2) Dans les opérations mixtes de différents types, le compilateur convertira également automatiquement les types de données, convertissant d'abord toutes les données impliquées dans l'opération vers le même type, puis effectuera des calculs. Les règles de conversion sont les suivantes :

La conversion est effectuée dans le sens d'une longueur croissante des données pour garantir que la valeur n'est pas déformée ou que la précision n'est pas réduite. Par exemple, lorsque int et long sont impliqués dans des opérations, les données de type int sont d'abord converties en type long, puis l'opération est effectuée.

Toutes les opérations en virgule flottante sont effectuées en double précision. Même s'il n'y a que du type float dans l'opération, il doit être converti en type double avant que l'opération puisse être effectuée.

Lorsque char et short participent à des opérations, ils doivent d'abord être convertis en type int.

La figure suivante décrit cette règle de conversion de manière plus vivante :

unsigned est également unsigned int. À ce stade, vous pouvez omettre int et simplement écrire unsigned.

Exemple de conversion de type automatique :

#include<stdio.h>
int main(){
    float PI = 3.14159;
    int s1, r = 5;
    double s2;
    s1 = r * r * PI;
    s2 = r * r * PI;
    printf("s1=%d, s2=%f\n", s1, s2);
    return 0;
}
Copier après la connexion

Résultat d'exécution :

s1=78, s2=78.539749
Copier après la connexion

Lors du calcul de l'expression r*r*PI, r et PI sont tous deux convertis en type double, expression The Le résultat de la formule est également de type double. Cependant, puisque s1 est un nombre entier, le résultat de l'opération d'affectation est toujours un nombre entier et la partie décimale est ignorée, ce qui entraîne une distorsion des données.

Pour plus de contenu lié à la programmation, veuillez faire attention à la colonne Introduction à la programmation sur le site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal