p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre du Club
    Inscrit en
    novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations forums :
    Inscription : novembre 2006
    Messages : 304
    Points : 46
    Points
    46

    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

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 17 475
    Points
    17 475

    Par défaut

    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

  3. #3
    Expert Confirmé Sénior
    Avatar de koala01
    Inscrit en
    octobre 2004
    Messages
    9 927
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 927
    Points : 17 974
    Points
    17 974

    Par défaut

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] la différence entre double et uint8
    Par okitrinaw dans le forum Images
    Réponses: 2
    Dernier message: 07/04/2012, 11h38
  2. Réponses: 9
    Dernier message: 28/05/2008, 14h46
  3. différence entre long et double
    Par bolltt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/03/2008, 18h46
  4. Différence entre Integer et double?
    Par Michel DELAVAL dans le forum Access
    Réponses: 15
    Dernier message: 10/02/2006, 15h57
  5. Quelle est la différence entre le float et le real ?
    Par Manson dans le forum Débutant
    Réponses: 3
    Dernier message: 10/08/2004, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo