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 :

Tester Null sur un double


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 212
    Par défaut Tester Null sur un double
    Bonjour,

    Voilà, question toute bête je l'avoue ... j'ai testé pas mal de choses, mais je souhaiterais tester si un double est NULL dans un if ? sachant qu'à son initialisation il est à NULL, mais j'ai l'impression que par défaut le NULL est remplacé par 0, est ce normal ?

    Merci à vous.

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 734
    Par défaut
    Bonjour.

    La logique de NULL est très différente en C++ par rapport au Java / C#.

    En C++, c'est utilisé uniquement par les variables de type pointeur, et c'est un alias pour dire que le pointeur pointe sur rien.

    Une variable non pointeur ne peut pas être NULL.
    Un double contient forcément soit une valeur, +/- infini ou NaN.

    Citation Envoyé par angioedema Voir le message
    je souhaiterais tester si un double est NULL dans un if ?
    Tu ne peux pas, tu peux uniquement le comparer à une autre valeur, en sachant que comparer un double est toujours compliqué (problème de précision qui peut faire foirer une comparaison de deux doubles pourtant égaux).

    Citation Envoyé par angioedema Voir le message
    mais j'ai l'impression que par défaut le NULL est remplacé par 0, est ce normal ?
    Oui, car comme je le disais NULL est un alias de pointeur nul,qui est par convention égale à 0.

    Je pense qu'avec un peu de code on pourra t'orienter vers ce que tu veux faire.

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Il existe boost::optional pour ce genre de chose, ou optional_lite, qui fait la même chose (ou presque) sans importer tout boost.

  4. #4
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 212
    Par défaut
    Merci pour la réponse. Je me doutais qu'une histoire de pointeur devait jouer sur ce problème =='

    en gros j'ai 4 variables de types double à tester, je les avais initialisé comme suit (je ne vais donner le code que pour une) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    MaStructure{
      friend class boost::serialization::access;
      template<class Archive>
      void serialize(Archive& ar, const unsigned int)
      {
          ar& BOOST_SERIALIZATION_NVP(y);
      }
      double y;
      MaStructure: y(NULL) {}
    };
    de là je voulais faire dans une méthode, le test sur un array de ma structure (si un de mes éléments a un y NULL, alors je fais ce que j'ai à faire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(boost::algorithm::any_of(mesDatas, [](MaStructure const& d) { return d.y == NULL ; }))
      /* Je fais ce que j'ai à faire */

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 212
    Par défaut
    Je vais essayer merci, je suis déjà sous boost pour ma part !

  6. #6
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 212
    Par défaut
    Nickel, pour info ça marche avec boost Merci encore !

  7. #7
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Au plaisir, bonne continuation.

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

Discussions similaires

  1. Requête sur table à double clés primaires
    Par darkian dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/03/2005, 17h28
  2. Recevoir "NULL" sur port série
    Par WinY57 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 04/03/2005, 11h37
  3. [SYBASE ASE] Rajouter une contrainte null sur une colonne
    Par Little_Goldo dans le forum Sybase
    Réponses: 1
    Dernier message: 09/02/2005, 10h48
  4. Ouvrir un fichier sur un double-clic dans une TListBox
    Par SegmentationFault dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/08/2004, 17h22
  5. Contraite NULL sur une colonne en fonction d'une autre colon
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2004, 19h29

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