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

Comprendre la conversion de types en C++ : Implicite, explicite et techniques de cast

Conversion de types en C++

Explorez comment C++ gère les changements de type de données, des conversions automatiques aux techniques de cast sécurisées, avec des exemples de code pratiques.

C++ vous permet de transformer une valeur d'un type à un autre — un processus appelé conversion de type. Comprendre les règles derrière ces conversions vous aide à écrire du code plus clair et plus sûr.

Il y a deux catégories principales :

  1. Conversion implicite (automatique)
  2. Conversion explicite (cast de type)

Conversion de type implicite

Quand le compilateur promeut ou rétrograde automatiquement une valeur vers un type compatible, c'est une conversion implicite. Cela se passe en coulisses, donc vous ne voyez pas de cast dans votre source.

Exemple 1 : int → double

#include <iostream>
using namespace std;
int main() {
    int num_int = 9;
    double num_double = num_int; // conversion implicite
    cout << "num_int = " << num_int << endl;
    cout << "num_double = " << num_double << endl;
    return 0;
}

Sortie

num_int = 9
num_double = 9

Le compilateur a élargi le int en double automatiquement avant l'assignation.

Exemple 2 : double → int (troncation)

#include <iostream>
using namespace std;
int main() {
    double num_double = 9.99;
    int num_int = num_double; // conversion implicite
    cout << "num_int = " << num_int << endl;
    cout << "num_double = " << num_double << endl;
    return 0;
}

Sortie

num_int = 9
num_double = 9.99

Puisque int n'a pas de partie fractionnaire, la composante décimale est jetée — un exemple de conversion de rétrécissement.

Astuce : La conversion d'un type plus large vers un plus étroit peut perdre de la précision. Soyez toujours explicite quand la perte importe.

Conversion de rétrécissement et perte de données

Quand un type plus grand est assigné à un plus petit, le compilateur peut tronquer les données. Visualiser l'inadéquation des plages aide à prévenir les bugs inattendus.

Comprendre la conversion de types en C++ : Implicite, explicite et techniques de cast

Conversion explicite (Cast de type)

Quand vous devez contrôler la conversion, vous utilisez des casts explicites. C++ offre plusieurs syntaxes pour atteindre le même objectif, chacune avec ses propres directives de style.

  1. Notation de cast style C
  2. Cast style fonction (vieux style C++)
  3. Casts C++ modernes : static_cast, dynamic_cast, const_cast, reinterpret_cast

Cast de type style C

Cette forme traditionnelle est héritée de C :

(type_donnees)expression;

Exemple :

#include <iostream>
using namespace std;
int main() {
    int num_int = 26;
    double num_double = (double)num_int; // cast style C
    cout << "num_double = " << num_double << endl;
    return 0;
}

Cast style fonction

Une alternative plus explicite qui se lit comme un appel de constructeur :

type_donnees(expression);

Exemple :

#include <iostream>
using namespace std;
int main() {
    int num_int = 26;
    double num_double = double(num_int); // cast style fonction
    cout << "num_double = " << num_double << endl;
    return 0;
}

Cast style C et style fonction

#include <iostream>
using namespace std;
int main() {
    double num_double = 3.56;
    cout << "num_double = " << num_double << endl;
    int num_int1 = (int)num_double; // style C
    int num_int2 = int(num_double); // style fonction
    cout << "num_int1 = " << num_int1 << endl;
    cout << "num_int2 = " << num_int2 << endl;
    return 0;
}

Sortie

num_double = 3.56
num_int1 = 3
num_int2 = 3

Les deux casts produisent des résultats identiques, mais le cast style fonction est préféré en C++ moderne car il est plus clair et moins sujet aux erreurs.

Opérateurs de cast C++ modernes

Au-delà des formes classiques, C++ offre quatre opérateurs de cast dédiés qui fournissent une meilleure sécurité de type et intention :

Nous plongerons dans chacun de ces opérateurs dans des tutoriels dédiés.


Tutoriels recommandés :

Langue C

  1. Maîtriser la conversion de types en C# : Implicite, Explicite, Parse et méthodes Convert
  2. Comprendre les types de données C++ : Fondamentaux, modificateurs et bonnes pratiques
  3. Maîtriser les opérateurs C++ : Guide complet avec exemples pratiques
  4. Commentaires C++ : Bonnes pratiques pour un code lisible et maintenable
  5. Maîtriser les templates de classe en C++ : Guide pratique
  6. Maîtriser la conversion et le transtypage de types en Python : Guide complet
  7. Maîtriser les nombres, la conversion de types et les mathématiques en Python
  8. Maîtriser le type char en C++ : Déclaration, ASCII et techniques de conversion
  9. Langage C++ : Vue d'ensemble et caractéristiques clés