Faut-il cast ou pas cast en C++ ?

Bonjour
Après avoir programmé un algo en R, en Haskell et en Julia, je l'ai maintenant programmé en C++ (en fait en Rcpp, c'est une librairie R pour faire facilement du C++ exportable dans R, bref peu importe). Mais je ne sais pas si j'ai de bonnes pratiques dans ce langage.

J'ai une question sur le "cast" (je ne sais pas comment on dit en français). Supposons que j'aie un double x et un int i, et je veux faire la division x / i. Je peux alors faire simplement x / i, ça marche car C(++) reconnaîtra bien une division de flottants. Ou bien je peux faire le cast: x / (double)i. Quelle est la meilleure pratique ?

Maintenant supposons que j'aie aussi un double y et je veux faire x / i et y / i. Est-ce que je gagne quelque chose si je fais un seul cast au lieu de deux, ainsi :
double i_dbl = (double)i;
double ratio1 = x / i_dbl;
double ratio2 = y / i_dbl;

Réponses

  • Je ne sais pas ce que sont les bonnes pratiques. M'est avis qu'avant que ça joue un rôle, il faudra des centaines de millions de calculs.

    Anyway, en bon français on parle de conversion de type, de coercition ou de cast (avoue qu'en italique pour indiquer l'emprunt d'une langue étrangère, c'est tout de suite plus classe !).
  • Bonjour, le cast est automatique (implicite) dans ce cas. Les operateurs arithmetiques operent uniquement sur variables du meme type. Ici on doit retourner un double donc l'int va etre caster par le compilateur. Donc la bonne pratique est de ne pas alourdir le code pour le lecteur et de laisser le compilateur faire son travail. Une autre bonne pratique en C++ est d'utiliser static_cast<double>(x) plutot que le cast a la C: (double) x. C'est exactement la meme chose mais la syntaxe est plus claire.
  • Bonjour,

    Tu peux dire "transtypage", mais j'ai plutôt l'habitude de dire "cast" et même d'employer le verbe "caster".

    Cordialement,

    Rescassol
Connectez-vous ou Inscrivez-vous pour répondre.