Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++
C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2007, 21h49   #1
Maria1505
Membre du Club
 
Inscription : novembre 2006
Messages : 304
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2006
Messages : 304
Points : 44
Points : 44
Par défaut différence entre double et float

bonjour j'arrive pas a differencier entre les doubles et les float
entre passage par adresse et par reference veuillez me guider
Maria1505 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 22h05   #2
Laurent Gomila
Rédacteur
 
Avatar de Laurent Gomila
 
Développeur informatique
Inscription : avril 2003
Messages : 10 651
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2003
Messages : 10 651
Points : 17 725
Points : 17 725
La différence entre float et double est une différence de précision. Les premiers sont codés sur 32 bits, les seconds sur 64 bits. Voir la norme IEEE 754 pour plus de précisions.

Le "passage par adresse" n'existe pas à proprement parler en C++, on passe en fait des adresses par valeur. Le passage par référence c'est le fait de passer un paramètre et non une copie de celui-ci (en interne c'est la même chose que de passer son adresse).

Plus de précisions sur tout ça dans la FAQ.
__________________
Mieux que SDL : découvrez SFML
Laurent Gomila est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2007, 05h16   #3
koala01
Modérateur
 
Avatar de koala01
 
Philippe Dunski
Inscription : octobre 2004
Messages : 8 626
Détails du profil
Informations personnelles :
Nom : Philippe Dunski
Âge : 41

Informations forums :
Inscription : octobre 2004
Messages : 8 626
Points : 13 346
Points : 13 346
Envoyer un message via MSN à koala01 Envoyer un message via Skype™ à koala01
Salut,
Citation:
Envoyé par Laurent Gomila
La différence entre float et double est une différence de précision. Les premiers sont codés sur 32 bits, les seconds sur 64 bits. Voir la norme IEEE 754 pour plus de précisions.
Heuu... il est préférable d'éviter de siter un nombre de bits en ce qui concerne la taille des différents types...

En effet, cela dépend, avant tout, de la taille d'un caractère, qui n'est pas forcément codé sur 8 bits, et la norme en C et en C++ présise juste que le nombre de bits de tel type doit etre plus grand ou égal à celui de tel autre type, qui lui meme est plus grand ou égal à celui de tel autre type...

Bref, la taille réelle des types de base dépend en grande partie de l'architecture visée, mais aussi du compilateur utilisé

Quand à ta deuxième question: une référence, c'est l'alias d'un objet, et ca se trouve, en prenant un très gros raccourcis quand meme, à peu pres à mi chemin entre l'objet lui-même et un pointeur sur cet objet...

Ou, si tu préferes, c'est "comme un pointeur" mais avec des différences notables...

Pour éviter aux autres de pousser de hauts cris en lisant ces deux explications, je vais quand meme aller un peu plus loin:

En interne, une référence va fonctionner un peu comme un pointeur (on va passer "l'adresse à laquelle se trouve" l'objet), mais avec les restrictions que:
  • ca ne peut pas etre égal à NULL (l'objet doit exister)
  • tout ce que tu fais sur ta référence est répercuté sur l'objet
  • ca ne peut pas etre alloué dynamiquement (tu ne peu pas faire un new ou un delete sur une référence)
  • ca ne provoque pas la recopie de l'ensemble du contenu de l'objet en mémoire

Par contre, à l'usage, cela permet de travailler exactement "comme si c'était l'objet" en question:
  • tu n'as pas besoin de "déréférencer" ton objet
  • tu utilises reference.membre et non reference->membre
Ainsi, là ou, dans une fonction qui prendrait un pointeur comme parametre, tu devrais écrire
Code :
1
2
3
4
5
6
7
 
void mafonct(type *ptr)
{
    ptr->nom="machin";
    std::cout<<(*ptr);
    ...
}
tu pourras te contenter d'un simple
Code :
1
2
3
4
5
6
 
void mafonct(type &ref)
{
    ref.nom="machin";
    std::cout<<ref;
}
exactement comme si ref était un objet de type "type" classique...

L'explication ne se veut pas exhaustive ni forcément "précisement exacte"... elle veut juste permettre de comprendre un peu le principe ...

Pour plus d'info, ben, le lien vers la FAQ a déjà été donné
koala01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h32.


 
 
 
 
Partenaires

Hébergement Web