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 :

v�rification si variable int vide ou pas


Sujet :

C++

  1. #1
    Membre tr�s actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par d�faut v�rification si variable int vide ou pas
    Salut � tous.
    Comment je pourrais v�rifier si une variable int est vide ou pas ? si on a pas encore donn� une valeur.

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    762
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 762
    Par d�faut
    Tu ne peux pas, mais tu peux fixer une valeur "sentinelle" � l'initialisation comme -1 ou 0. Ou encore utiliser un type "option".

  3. #3
    Membre Expert
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par d�faut
    Une variable, m�me non initialis�e poss�de une valeur. Tu peux le v�rifier simplement
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    #include <iostream>
    int main() {
       int i;
       std::cout << i << std::endl;
       return 0;
    }
    Si tu as vraiment besoin d'une variable qui ne poss�de pas de valeur quand non initialis�e, tu peux utiliser boost::optional.

  4. #4
    Membre tr�s actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par d�faut
    Merci pour les r�ponses.


    L'application sera utiliser en cgi pour faire un site web.

    Parfois depuis le visiteur, parfois depuis la base de donn�e, j'ai des valeurs vide qui viennent.

    Et je dois faire des v�rifications pour faire les bonnes actions.

    Sachant que pour un site web, on a pas mal de variable int � v�rifier, je sais pas quel bonne m�thode choisir.


    (En langage C c'est pareil ?)

  5. #5
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    762
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 762
    Par d�faut
    Tout d�pend de l'interface avec laquelle tu r�cup�res tes valeurs, en consultant la documentation tu peux savoir comment faire.

  6. #6
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par d�faut
    En g�n�ral, pour repr�senter une valeur vide, on utilise une paire <bool�en, valeur>. Le bool�en est � vrai si la valeur est initialis�e (par exemple, on peut aussi utiliser la convention inverse, le tout est de s�y tenir). boost optional est une solution, d�autant que comme c�est juste un en-t�te, ce n�est pas un probl�me � rajouter dans un projet.

    Les solutions � base de valeur magiques ne sont pas g�niales, et posent pas mal de probl�mes, sauf si tu as la garantie que ta valeur � magique � est en dehors de l�intervalle des valeurs possibles (mais dans tous les cas, ce sera peu lisible).

  7. #7
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par kripteks Voir le message
    (En langage C c'est pareil ?)
    Oui, c'est pareil en C, et dans beaucoup d'autres langages (PHP, java pour les types primitifs, etc.).
    L'id�e c'est que les types primitifs ne correspondent � rien d'autre qu'un morceau de m�moire. L'identifiant d'une variable d�termine l'adresse de la variable (o� est-elle stock�e), son type d�termine sa taille (le nombre de bits utilis�s pour repr�senter sa valeur).
    Donc, puisqu'une variable (dans le cas o� son type est primitif) correspond � un morceau de m�moire, c'est � dire une s�rie de bits, et que ces bits ont tous obligatoirement une valeur (0 ou 1), une variable a obligatoirement une valeur. D'o� la distinction entre la d�claration et l'initialisation d'une variable. Lorsqu'on d�clare une variable, on lui donne une adresse et un taille. Lorsqu'on l'initialise, on lui donne une valeur. En C++, une bonne pratique consiste � faire les deux en m�me temps, syst�matiquement: lorsqu'on d�clare une variable, on l'initialise (ce qu'on ne peut pas faire en C):
    Dans ton cas, pour formaliser ce qui a d�j� �t� dit, il y a 3 solutions possibles:
    1. Utiliser une valeur par d�faut pour chacune de tes variables. Cette valeur sera utilis�e pour l'initialisation (en m�me temps que la d�claration donc). Inconv�nient: il faut que cette valeur soit choisie de fa�on � ce que la variable ne puisse jamais �tre assign�e � cette valeur autre part qu'� son initialisation.
    2. Encapsuler tes variables pour les lier avec un champ d�di�. Le simple est une paire (std::pair<bool, LeTypeDeMaVariable>) dont le premier �l�ment (le bool�en) d�termine si la variable a �t� initialis�e. Inconv�nient: petite perte de performance.
    3. Utiliser boost::optional, que je ne connais pas donc je n'en connais pas les inconv�nients.

  8. #8
    gl
    gl est d�connect�
    R�dacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par d�faut
    Citation Envoy� par r0d Voir le message
    lorsqu'on d�clare une variable, on l'initialise (ce qu'on ne peut pas faire en C):
    Pardon ! Si c'est aussi faisable en C (et le code que tu donnes est valide aussi bien en C qu'en C++).

  9. #9
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par gl Voir le message
    Pardon ! Si c'est aussi faisable en C (et le code que tu donnes est valide aussi bien en C qu'en C++).
    Oops, au temps pour moi
    �a fait plus de 10 ans que je n'ai pas fait de C, il me semblait qu'� l'�poque on ne pouvait pas faire �a.

Discussions similaires

  1. [XL-2010] Variable qui ne devrait pas �tre vide
    Par GSFBC dans le forum Macros et VBA Excel
    R�ponses: 10
    Dernier message: 20/05/2014, 14h00
  2. [HTML 5] Test si variable vide ou pas dans code HTML
    Par Ryadus dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 1
    Dernier message: 03/05/2010, 14h49
  3. R�ponses: 4
    Dernier message: 04/12/2008, 14h01
  4. variable se vide !?
    Par georgeabitbol dans le forum ASP
    R�ponses: 10
    Dernier message: 04/06/2004, 09h52

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