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 :

Output Inatendu -- Aidez moi a expliquer ce "phénomène"


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut Output Inatendu -- Aidez moi a expliquer ce "phénomène"
    Bonjour,

    Voila j'ai écris ce qui me semblait être un projet quelquonque très facile.
    Mais en l'éxécutant, je tombe sur un output plutot bizzare, mais qui ne gène pas au fonctionnement de mon programme. Mais apr curiosité, j'aimerai savoir d'où vient cet output.

    Voila mon code ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Membre
    {
    private :
    float hours;
    public :
    void addtime(float timetoadd);
    float get_time();
    
    };
    void Membre::addtime(float timetoadd)
    {
        hours+=timetoadd;
    }
    float Membre::get_time()
    {
        return hours;
    }
    int main()
    {
    Membre gabriel;
    
    cout << gabriel.get_time();
    gabriel.addtime(500);
    cout << gabriel.get_time();
    system("PAUSE");
    return 0;
    }
    La ligne d'ou viens l'output bizzare est celle en orange.
    Je m'attendais a qu'il affiche 0, étant donné que je n'ai pas donné de valeur a hours mais il affiche a la place une série de caractere(nombres lettres) vraiment innatendues. Pourtant il doit prendre ca pour un 0 puisque lorsque j'appele la fonction addtime, il le compte comme si c'était un 0.


    Pouvez vous m'expliquer,

    Merci,

    ggcourtois

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Si crées un constructeur et que tu initialises à 0.0 hours dedans, ça donne quoi ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Si tu compiles ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    #include <string>
    #include <iostream>
     
     
    int main()
    {
      float hours;
     
      std::cout << hours << std::endl;
     
      return 0;
    }

    Resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ ./test
    -7.0042e-15
    $ ./test
    -6.89318e-15
    $ ./test
    -6.73185e-15
    $ ./test
    -7.08053e-15

    La valeur affectée à hours est "aléatoire" car elle n'a pas de valeur assignée par défaut.

  4. #4
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    C'est quoi l'affichage bizarre exactement (ou du moins quel style), on peut avoir un exemple?

  5. #5
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Ce sont des affichages comme dans le message de tamiel.
    Les nombres et les lettres ce sont des flottants écrit avec le "e".

    Donc si tu initialises à 0.0 dans un constructeur ta variable "hours", ton code sera bon

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    D'accord merci beaucoup, parceque je fesais du c# et si j'ai bonne mémoire, ceci est pris en charge en c#. Mais ce que je comprends pas c'est la raison pour laquelle il fait le bon caclul(hours=500) alors que la valeur par defaut est censé être aléatoire?

    Merci de m'expliquer,
    ggcourtois

  7. #7
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Je suppose que lorsque tu y accèdes pour le modifier, il lui affecte la valeur 0.0 avant de le modifier. Pourquoi, je ne sais pas.
    Ca doit être dans la norme ça.

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

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