Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Conversion de type en C :conversion de type, implicite, explicite avec exemple

Qu'est-ce que le transtypage en C ?

Le transtypage consiste à convertir un type de données en un autre. Il est également appelé conversion de données ou conversion de type en langage C. C'est l'un des concepts importants introduits dans la programmation en "C".

La programmation en « C » fournit deux types d'opérations de conversion de type :

  1. Transformation de type implicite
  2. Transformation de type explicite

Transformation de type implicite

La conversion implicite des types signifie la conversion des types de données sans perdre leur signification d'origine. Ce type de transtypage est essentiel lorsque vous souhaitez modifier les types de données sans modifier la signification des valeurs stockées dans la variable.

La conversion de type implicite en C se produit automatiquement lorsqu'une valeur est copiée dans son type de données compatible. Lors de la conversion, des règles strictes de conversion de type sont appliquées. Si les opérandes sont de deux types de données différents, alors un opérande ayant un type de données inférieur est automatiquement converti en un type de données supérieur. Ce type de conversion de type peut être vu dans l'exemple suivant.

#include<stdio.h>
int main(){
	short a=10; //initializing variable of short data type
	int b; //declaring int variable
	b=a; //implicit type casting
	printf("%d\n",a);
	printf("%d\n",b);
}

Sortie :

10
10

  1. Dans l'exemple donné, nous avons déclaré une variable de type de données court avec une valeur initialisée à 10.
  2. Sur la deuxième ligne, nous avons déclaré une variable d'un type de données int.
  3. Sur la troisième ligne, nous avons attribué la valeur de la variable s à la variable a. Sur la troisième ligne, la conversion de type implicite est effectuée lorsque la valeur de la variable s qui est de type de données court est copiée dans la variable a qui est de type de données int.

Conversion d'un caractère en entier

Prenons l'exemple de l'ajout d'un caractère décodé en ASCII avec un entier :

#include <stdio.h>
main() {
   int  number = 1;
   char character = 'k'; /*ASCII value is 107 */
   int sum;
   sum = number + character;
   printf("Value of sum : %d\n", sum );
}

Sortie :

 Value of sum : 108

Ici, le compilateur a fait une promotion d'entier en convertissant la valeur de 'k' en ASCII avant d'effectuer l'opération d'addition réelle.

Hiérarchie de conversion arithmétique

Le compilateur procède d'abord à la promotion d'un caractère en entier. Si les opérandes ont toujours des types de données différents, ils sont convertis dans le type de données le plus élevé qui apparaît dans le diagramme hiérarchique suivant :

Hiérarchie de conversion arithmétique

Considérez l'exemple suivant pour comprendre le concept :

#include <stdio.h>
main() {
   int  num = 13;
   char c = 'k'; /* ASCII value is 107 */
   float sum;
   sum = num + c;
   printf("sum = %f\n", sum );}

Sortie :

 sum = 120.000000

Tout d'abord, la variable c est convertie en entier, mais le compilateur convertit num et c en "flottant" et les ajoute pour produire un résultat "flottant".

Points importants sur les conversions implicites

Nous ne pouvons pas effectuer de conversion de type implicite sur les types de données qui ne sont pas compatibles entre eux, tels que :

  1. Convertir float en int tronquera la partie fractionnaire, perdant ainsi la signification de la valeur.
  2. Convertir double en flottant arrondira les chiffres.
  3. La conversion d'un entier long en entier entraînera la suppression de bits de poids fort en excès.

Dans tous les cas ci-dessus, lorsque nous convertissons les types de données, la valeur perdra sa signification. Généralement, la perte de sens de la valeur est prévenue par le compilateur.

La programmation en "C" fournit une autre méthode de transtypage qui est le transtypage explicite.

Transformation de type explicite

Dans la conversion de type implicite, le type de données est converti automatiquement. Il existe certains scénarios dans lesquels nous devrons peut-être forcer la conversion de type. Supposons que nous ayons une variable div qui stocke la division de deux opérandes déclarés en tant que type de données int.

 int result, var1=10, var2=3;
result=var1/var2;

Dans ce cas, après la division effectuée sur les variables var1 et var2 le résultat stocké dans la variable « résultat » sera au format entier. Chaque fois que cela se produit, la valeur stockée dans la variable "résultat" perd son sens car elle ne considère pas la partie fractionnaire qui est normalement obtenue lors de la division de deux nombres.

Pour forcer la conversion de type dans de telles situations, nous utilisons une conversion de type explicite.

Il nécessite un opérateur de coulée de type. La syntaxe générale des opérations de conversion de type est la suivante :

(type-name) expression

Ici,

Écrivons un programme pour montrer comment transtyper en C avec un transtypage explicite.

#include<stdio.h>
int main()
{
	float a = 1.2;
	//int b  = a; //Compiler will throw an error for this
	int b = (int)a + 1;
	printf("Value of a is %f\n", a);
	printf("Value of b is %d\n",b);
	return 0;
}

Sortie :

Value of a is 1.200000
Value of b is 2

  1. Nous avons initialisé une variable 'a' de type float.
  2. Ensuite, nous avons une autre variable 'b' de type entier. Étant donné que les variables 'a' et 'b' sont de types de données différents, 'C' ne permettra pas l'utilisation d'une telle expression et générera une erreur. Dans certaines versions de "C", l'expression sera évaluée mais le résultat ne sera pas souhaité.
  3. Pour éviter de telles situations, nous avons typé la variable 'a' de type float. En utilisant des méthodes de conversion de type explicites, nous avons réussi à convertir float en entier de type de données.
  4. Nous avons imprimé la valeur de "a" qui est toujours un flottant
  5. Après le transtypage, le résultat sera toujours un entier "b".

De cette façon, nous pouvons implémenter un casting de type explicite dans la programmation C.

Résumé

Gardez à l'esprit les règles suivantes pour la pratique de la programmation lorsque vous traitez avec différents types de données pour éviter la perte de données :


Langue C

  1. Conversion de types C#
  2. Conversion de type Python et conversion de type
  3. Casting de type Java
  4. Que dois-je faire avec les données ? !
  5. Instruction C++ Switch Case avec EXAMPLE
  6. Type de données Char C++ avec exemples
  7. Structure C++ avec exemple
  8. std ::list en C++ avec exemple
  9. C# - Types de données