Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre du Club
    Inscrit en
    novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 30

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

    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 : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2003
    Messages : 10 651
    Points : 16 141
    Points
    16 141

    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
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 678
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 678
    Points : 15 711
    Points
    15 711

    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 :
    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é

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •