Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1120 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] conversion de type avec visual C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] conversion de type avec visual C++

n°295731
trueslash
(╯°□°)╯︵ MMM
Posté le 28-01-2003 à 20:55:50  profilanswer
 

hello
 
j'arrive pas à arrondir un double en int avec visual c++
 
si qqun peut me tuyauter, ce serait cool
 
merci bien :jap:

mood
Publicité
Posté le 28-01-2003 à 20:55:50  profilanswer
 

n°295735
gloop
Posté le 28-01-2003 à 20:59:28  profilanswer
 

trueslash a écrit :

hello
 
j'arrive pas à arrondir un double en int avec visual c++
 
si qqun peut me tuyauter, ce serait cool
 
merci bien :jap:


 
int a = static_cast <int> (dbl);

n°295736
Taz
bisounours-codeur
Posté le 28-01-2003 à 21:00:27  profilanswer
 

bien :jap:

n°295742
trueslash
(╯°□°)╯︵ MMM
Posté le 28-01-2003 à 21:13:31  profilanswer
 

merchi bcp, je teste ça de suite :)

n°295983
LetoII
Le dormeur doit se réveiller
Posté le 29-01-2003 à 08:06:08  profilanswer
 

J'ai une question sur des types atomique comme int et double y a vraiment un intéret à faire un static_cast plutôt qu'un bon vieu cast (i.e. (int)monDouble)?  
 
PS: C une vrai question que je me pose, c pas pour faire chier :D


---------------
Le Tyran
n°295985
gloop
Posté le 29-01-2003 à 08:16:58  profilanswer
 

LetoII a écrit :

J'ai une question sur des types atomique comme int et double y a vraiment un intéret à faire un static_cast plutôt qu'un bon vieu cast (i.e. (int)monDouble)?  
 
PS: C une vrai question que je me pose, c pas pour faire chier :D


Le C++ a conservé le bon vieux cast à la C. mais en C++, il peut être utilisé la où tu fous un static_cast, un reinterpret_cast ou un const_cast (mais pas un dynamic_cast). Par contre l'avantage est  que ces opérateurs permettent de dire explicitement le type de conversion que tu veux et au niveau relecture de code, c + simple. c clair qu'au niveau du code généré ca change pas gd chose, ms c surtout (uniquement ?) pour la maintenance de code

n°295986
Cherrytree
cn=?
Posté le 29-01-2003 à 08:17:11  profilanswer
 

LetoII a écrit :

J'ai une question sur des types atomique comme int et double y a vraiment un intéret à faire un static_cast plutôt qu'un bon vieu cast (i.e. (int)monDouble)?  
 
PS: C une vrai question que je me pose, c pas pour faire chier :D


L'intérêt à mon sens, c'est d'être explicite et donc mieux compris (par les autres autant que par le compilo).


---------------
Le site de ma maman
n°295989
LetoII
Le dormeur doit se réveiller
Posté le 29-01-2003 à 08:21:29  profilanswer
 

gloop a écrit :


Le C++ a conservé le bon vieux cast à la C. mais en C++, il peut être utilisé la où tu fous un static_cast, un reinterpret_cast ou un const_cast (mais pas un dynamic_cast). Par contre l'avantage est  que ces opérateurs permettent de dire explicitement le type de conversion que tu veux et au niveau relecture de code, c + simple. c clair qu'au niveau du code généré ca change pas gd chose, ms c surtout (uniquement ?) pour la maintenance de code


 
Ha donc vous vous trouvez que static_cast<T>(var) est plus explicite que (T)var... mouai pkoi pas.


---------------
Le Tyran
n°295994
Cherrytree
cn=?
Posté le 29-01-2003 à 08:23:50  profilanswer
 

LetoII a écrit :


 
Ha donc vous vous trouvez que static_cast<T>(var) est plus explicite que (T)var... mouai pkoi pas.


Ben oui. C'est plus explicite, déjà parce que c'est écrit noir sur blanc, ou vert sur noir si tu as un 8088 à la maison. [:ddr555]


---------------
Le site de ma maman
n°295997
LetoII
Le dormeur doit se réveiller
Posté le 29-01-2003 à 08:24:35  profilanswer
 

Cherrytree a écrit :


Ben oui. C'est plus explicite, déjà parce que c'est écrit noir sur blanc, ou vert sur noir si tu as un 8088 à la maison. [:ddr555]  


 
 :lol:


---------------
Le Tyran
mood
Publicité
Posté le 29-01-2003 à 08:24:35  profilanswer
 

n°295998
gloop
Posté le 29-01-2003 à 08:25:55  profilanswer
 

LetoII a écrit :


 
Ha donc vous vous trouvez que static_cast<T>(var) est plus explicite que (T)var... mouai pkoi pas.


oui comme je l'ai dit le cast C peut faire plusieurs types de cast:
static_cast pour les casts entre types de mêmes familles
const_cast pour jarter le qualifier const
reinterpret_cast pour les types incompatibles entre eux
 
Avec ces opérateurs C++ tu explicites le type de cast que tu codes

n°296011
Taz
bisounours-codeur
Posté le 29-01-2003 à 08:41:20  profilanswer
 

gloop a écrit :


oui comme je l'ai dit le cast C peut faire plusieurs types de cast:
static_cast pour les casts entre types de mêmes familles
const_cast pour jarter le qualifier const
reinterpret_cast pour les types incompatibles entre eux
 
Avec ces opérateurs C++ tu explicites le type de cast que tu codes


c'est surtout que tu peux etre averti a la compil ou à l'exécution de leur succes

n°296704
Captain ad​-hoc
miam les bon batonnets de tux
Posté le 29-01-2003 à 22:17:04  profilanswer
 

Pour ce genre de conversions j'écris int(x) plutot que (int)x, c'est quand même un peu plus conforme à l'appel d'un constructeur de "int" si il existait, à partir d'un double.

n°296712
Taz
bisounours-codeur
Posté le 29-01-2003 à 22:21:21  profilanswer
 

entre types types de bases ou pour les classes qui implémentent int(), c'est sur qu'il vaut mieux int(objet). mais le static_cast est la façon générique

n°296753
LeGreg
Posté le 29-01-2003 à 23:14:49  profilanswer
 

les differences entre casts a surtout de l'importance
pour les pointeurs et les references.
 
lorsque tu fais  
double truc;
int machin = (int) truc;
ou
int machin = int ( truc ); // c'est strictement equivalent dans ce cas
 
tu sais tres bien que le programme ne va pas
tenter d'interpreter la memoire occupee
par un double comme un int mais qu'il va appliquer
la conversion par defaut dans ce cas.
 
de plus dans ce cas, la conversion pouvant avoir lieu implicitement, il n'est pas utile de preciser un operateur de conversion explicite. Par contre c'est souvent utile
lorsqu'il y a ambiguite sur la fonction, la methode, le constructeur ou l'operateur qui peut etre appele sur un argument et il vaut mieux faire le cast explicite pour s'assurer que l'on appelle la bonne operation (exemple: division sur des entiers..)
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°296795
Musaran
Cerveaulté
Posté le 30-01-2003 à 06:11:54  profilanswer
 

Le problème du cast C, c'est qu'il oblige le compilateur à se taire quelle que soit la débilité de l'erreur qu'on laisse passer.
Oui on peut l'utiliser.
Et puis le jour où on remanie son code, on l'oublie. Et là...
 
J'ai passé deux heures à chercher un truc que le compilateur aurait pu me signaler immédiatement si j'avais pas fait l'andouille :sweat: .
Ça m'a servi de leçon :jap: .
 
Question: Que fait un cast C appliqué à une adresse d'objet C++ ?
-Considère la représentation de l'adresse selon un nouveau type (cas du cast en type numérique).
-Change le type pointé par l'adresse (cas aucune parenté).
-Ajuste l'adresse sur la position du type de base (cas du cast en pointeur de type de base).
-Idem, par indirection (si le type de base est virtuel).
-Appelle un constructeur du type du cast (si il existe).
-Apelle un opérateur de conversion du type casté (si il existe).
-Apelle un opérateur de conversion du type renvoyé par une surcharge de l'opérateur d'adresse.
-Supprime ou ajoute const et/ou volatile.
 
Bon casse-tête... :pt1cable:
 
Les casts qui ne marchent pas:
-adresse en flottant.
-objet en type pas de base, ou sans cast/constructeur défini.
-vers tableau, fonction ou membre.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] conversion de type avec visual C++

 

Sujets relatifs
Visual Basic : repeter une action jusque...Visual basique 6 et barres de defilement
Urgent... .Text dans Visual Basic 6.0[Delphi] Conversion date du format Unix vers format Windows
Probleme Visual Stduioconversion de 4e-001
Source control avec Visual Studio .NETcherche un prog du type php2asp !
MFC Visual C++ et Excel[vb] lancer l'impression d'un état d'access 97 par visual basic ?
Plus de sujets relatifs à : [C++] conversion de type avec visual C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR