IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

différence entre double et float


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    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.

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 643
    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é
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ 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ébuter
    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