Identifier la dissortingbution implicite et explicite

Je vous serais reconnaissant si quelqu’un peut répondre à ma question.
Identifier la dissortingbution implicite et explicite?

int a = 2, b = 3; float f = 2.5; double d = -1.2; int int_result; float real_result; 

Formellement, la question n’a aucun sens du sharepoint vue terminologique. Il n’y a pas de “casting implicite”. L’intérêt principal du terme cast est qu’il désigne une conversion explicitement demandée. Cast est la conversion de type explicitement demandée par l’opérateur du formulaire (type) .

Ce qui dans ce cas peut être explicite ou implicite est appelé conversion . C’est ce que l’auteur de la question a probablement voulu dire, mais sa mauvaise connaissance de la terminologie en C.

Dans votre exemple de code, une seule initialisation nécessite une conversion. Et, bien sûr, cette conversion est implicite, car votre code ne contient aucun choix .

Par définition, les conversions sont toujours explicites. Ce qui est implicite, c’est la conversion . Lorsqu’un object se voit atsortingbuer une valeur qui n’est pas le type de l’object, l’une des deux choses peut se produire:

  1. le type de la valeur est “compatible” avec le type de l’object, c’est-à-dire que la norme autorise une telle affectation. Ensuite, le compilateur effectue une conversion pour vous. C’est ce qu’on appelle la conversion implicite. Par exemple, size_t i = -1; a une conversion implicite de int 1 en size_t .
  2. sinon, le compilateur doit émettre un diagnostic dans ce cas, et vous avez besoin d’un transtypage pour effectuer l’affectation. Le résultat d’une telle conversion est soit défini par l’implémentation, soit non défini.

Compte tenu de ce qui précède, vous avez rarement besoin de lancer dans C. Une des fois où vous avez besoin d’un transtock peut être dans une fonction variadique car le compilateur ne peut pas effectuer la conversion implicite à votre place. Un autre exemple consisterait à convertir un entier en pointeur de la manière définie par l’implémentation.

Une fois de plus, il n’existe pas de casting implicite .

bien, c’est en fait un travail à domicile en classe C, et un exemple de réponse a été donné pour la première ligne, ce que je n’ai pas compris:

 int_result = a * f; // a is casted implicitly to float by the multiplication operation a*f, // the product is then casted implicitly to int by the = (assignment) operation. real_result = a * f; real_result = (float) a * b; d = a + b / a * f; d = f * b / a + a; 

merci encore, attendons vos réponses avec impatience !! 🙂

int a = 2, b = 3;

float f = 2,5;

double d = -1,2; // Ceci est une dissortingbution implicite.

int int_result;

float real_result;

Il n’y a pas de dissortingbution explicite dans les déclarations ci-dessus.