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 :

return ( B == 0.0 ) ? 1.0 : 0.0;


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut return ( B == 0.0 ) ? 1.0 : 0.0;
    Bonjour,
    Quelqu'un pourrais me dire ce que signifie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return ( B == 0.0 ) ? 1.0 : 0.0;
    dans la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    virtual typeA Fonction1( const typeB& B ) const
        {
        return ( B == 0.0 ) ? 1.0 : 0.0;
        }

    Reponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x = condition ? valeur1 : valeur2;
    equivalent a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(condition)
    x = valeur1;
    else
    x = valeur2;

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Par défaut
    Citation Envoyé par loisir1976 Voir le message
    Bonjour,
    Quelqu'un pourrais me dire ce que signifie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return ( B == 0.0 ) ? 1.0 : 0.0;
    dans la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    virtual typeA Fonction1( const typeB& B ) const
        {
        return ( B == 0.0 ) ? 1.0 : 0.0;
        }
    Merci
    condition ? cas1 : cas2
    est l'operateur ternaire qui remplace un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if()
    {
        ;
    }
    else
    {
        ;
    }

  3. #3
    Membre confirmé Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Par défaut
    Salut,

    C'est ce que l'on appelle une condition ternaire

    En fait, ça évalue ce qui se trouve avant le point d'interrogation, si c'est vrai alors c'est l'instruction entre le point d'interrogation et les deux points, si c'est faux, on retourne ce qu'il y a après les deux points.

    En gros, tu peux remplacer ce code par celui-ci, qui est équivalent :

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (B == 0)
      return 1.0;
    else
      return 0.0;

    voila

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    On peut juste encore préciser que, contrairement à l'expression if(... else) qui ne sera évalué qu'à l'exécution, l'opérateur ternaire peut être évalué au moment de la compilation.

    Cela permet entre autres de chouettes choses lorsque l'on travaille en programmation générique (avec les template) .

    Cependant, ton code, bien que correct est dangereux...

    En effet, tu semble travailler avec des double ou avec des float.

    Or, comme l'ordinateur travaille en binaire et sur un nombre fini de bits, il existe des valeurs réelles qu'il est incapable de représenter avec une absolue précision (un peu comme le fameux 1/3 qui ne peut pas être représenté de manière tout à fait précise en base 10 )

    Il existe donc une (très petite) valeur nommée l'epsylon en deçà de laquelle on remarque l'égalité étrange de X - epsylon == X == X + epsylon.

    Un compilateur bien réglé devrait donc au minimum te donner un avertissement selon lequel l'égalité entre deux réels n'est jamais juste

    Tout cela pour dire qu'il est réellement déconseillé de comparer deux réels
    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

Discussions similaires

  1. [servlet][bean] return d'une variable
    Par LoLoSS dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/05/2004, 16h59
  2. [pl/pgSQL 7.2] Returns Opaque?
    Par Gruik dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/10/2003, 16h50
  3. return ();exit() ;
    Par Zazeglu dans le forum C
    Réponses: 12
    Dernier message: 10/10/2003, 20h56
  4. [C#] Changer le focus avec la touche return
    Par sblanc74 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/10/2003, 18h38
  5. return
    Par drKzs dans le forum C
    Réponses: 3
    Dernier message: 18/09/2003, 22h36

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