Maison  >  Article  >  développement back-end  >  Comment effectuer une conversion de type forcée en langage C

Comment effectuer une conversion de type forcée en langage C

青灯夜游
青灯夜游original
2021-04-25 16:43:5948311parcourir

En langage C, vous pouvez effectuer une conversion de type forcée via l'instruction « (nouveau nom de type) données ou expression » ; par exemple, « (float) 100 » convertit la valeur 100 (par défaut en type int) en Pour le type float, "(int)(x+y)" convertit le résultat de l'expression "x+y" en un type entier.

Comment effectuer une conversion de type forcée en langage C

L'environnement d'exploitation de ce tutoriel : système Windows 7, version c99, ordinateur Dell G3.

La conversion de type de données consiste à convertir des données (variables, valeurs, résultats d'expression, etc.) d'un type à un autre.

Le langage C dispose de deux méthodes de type de données :

  • Conversion de type automatique : Il s'agit de la conversion de type de données effectuée de manière silencieuse, implicite et secrète par le compilateur. ne nécessite pas l’intervention du programmeur et se produit automatiquement.

  • Conversion de type forcée

La conversion de type automatique est le résultat du propre jugement du compilateur basé sur le contexte du code, et parfois c'est pas si « intelligent » » ne peut pas répondre à tous les besoins. Si nécessaire, les programmeurs peuvent également proposer explicitement une conversion de type dans le code eux-mêmes, appelée conversion de type forcée.

La conversion de type automatique est une conversion de type effectuée silencieusement et implicitement par le compilateur et n'a pas besoin d'être reflétée dans le code ; la conversion de type forcée est explicitement proposée par le programmeur et doit être effectuée via le code dans un domaine spécifique. format Spécifie une conversion de type. En d’autres termes, la conversion de type automatique ne nécessite pas l’intervention du programmeur, tandis que la conversion de type obligatoire nécessite l’intervention du programmeur.

Le format de la conversion de type forcée est :

(type_name) expression

type_name est le nouveau nom du type et expression est l'expression. Par exemple :

(float) a;  //将变量 a 转换为 float 类型
(int)(x+y);  //把表达式 x+y 的结果转换为 int 整型
(float) 100;  //将数值 100(默认为int类型)转换为 float 类型

Ce qui suit est un exemple classique qui nécessite une conversion de type cast :

#include <stdio.h>
int main(){
    int sum = 103;  //总数
    int count = 7;  //数目
    double average;  //平均数
    average = (double) sum / count;
    printf("Average is %lf!\n", average);
    return 0;
}

Résultat de l'exécution :

Average is 14.714286!

sum et count sont tous deux de type int Si aucune intervention. est effectué, alors le résultat de l'opération de sum / count est également de type int, et la partie décimale sera supprimée bien que la moyenne soit de type double et puisse recevoir la partie décimale, mais ce n'est pas suffisant et la partie décimale est "castrée" ; à l'avance, et il ne peut recevoir que la partie entière, ce qui entraîne une grave distorsion des résultats de l'opération de division.

Puisque la moyenne est un type double, pourquoi ne pas l'utiliser pleinement et essayer d'améliorer la précision des résultats de l'opération ? Pour atteindre cet objectif, il nous suffit de convertir un de sum ou count en type double. Dans le code ci-dessus, nous forçons sum à être de type double, de sorte que le résultat de sum / count devienne également de type double, afin que la partie décimale puisse être conservée et que la valeur reçue par moyenne soit plus précise.

Dans ce code, il y a deux points à noter :

  • Pour les opérations de division, si le diviseur et le dividende sont tous deux des entiers, alors le résultat de l'opération est également un entier, avec la partie décimale sera directement éliminé ; si le diviseur ou le dividende est un nombre décimal, le résultat de l'opération est également un nombre décimal.

  • ( ) a une priorité plus élevée que / Pour l'expression (double) sum / count, (double) sum sera d'abord exécuté pour convertir la somme en type double, puis effectuera l'opération de division. , le résultat de l'opération est donc également de type double et peut conserver la partie décimale. Attention à ne pas écrire (double) (sum / count), sinon le résultat de l'opération sera 3.000000, et la partie décimale ne sera toujours pas conservée.

Recommandations associées : "Tutoriel vidéo sur le langage C"

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!

Déclaration:
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