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 :

information sur l'existence d'une variable


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut information sur l'existence d'une variable
    alors bonjours a tous

    j'aimerais savoir comment faire pour savoir si une variable de mon programme existe ou pas!

    je sais que dans des languages il existes des fonctions toute faite!!

    mais en c rien du tout!!

    donc si quelqu'un a une idee a mon probleme!!!

    merci!

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Commence par définir "existe" pour un prog C...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut
    Commence par définir "existe" pour un prog C...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut
    Je Comprend Rien A Ce Que Tu Me Dit

    Pourrais Tu Etre Plus Clair

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    sinon va faire un tour dans le debugger

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    "Si tu ne comprends pas, tu n'es pas digne de mon aide."

    C'est pourtant simple : Je veux savoir ce que tu appelles "exister" pour une variable dans un prog en C.
    • Ça veut dire quoi ?
      • Qu'elle est déclarée ?
      • Qu'elle est initialisée ?
      • Que c'est un pointeur non-nul ?
    • Quand est-on censé le détecter ?
      • À la compilation ?
      • À l'édition de liens ?
      • À l'exécution ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut
    bien entendu on est censer le voir a la compilation puis
    il s'agit de savoir si cette variable existe (c.a.d declarer) et possede une valeur
    *voila ce que ca veut dire

    merci de repondre medinoc si tu as une piste!!

  8. #8
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Si elle n'est pas déclaré tu va le voir à la compilation si tu l'utilise, tu va avoir une erreur.

    Si elle est déclaré mais pas défini tu n'aura pas d'erreur mais ta variable aura une valeur quelquonque, c'est a dire n'importe quoi (ce qu'il y avait à l'emplacement mémoire avant, sauf si c'est une variable globale en ce cas elle sera à 0). Si ta variable est un pointeur ça peu même planter ton programme.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    en gros vérifie ton prog ou fait toi une trace avec un debugger

  10. #10
    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,

    Le C fait partie de ces langages que l'on qualifie volontiers de "fortement typés"...

    Cela signifie que, pour qu'une variable existe, elle doit etre déclarée avec un type donné.

    Toute tentative d'acces à une variable qui n'a pas été déclarée avec un type donné sera refusée dés la compilation.

    Maintenant, il reste le problème de la valeur qu'elle prend... et tout particulièrement de la valeur qu'elle prend au moment de sa création (déclaration).

    Quand tu écrit un code
    tu dis au compilateur
    attention, je veux disposer d'une variable capable de contenir des valeurs de type integer (entier), et je veux pouvoir accéder à cette variable sous le nom de i
    Le compilateur, bien gentil, va chercher dans la mémoire un emplacement suffisant pour pouvoir contenir une valeur de type integer, rien d'autre...

    Ce "rien d'autre" signifie que le compilateur ne va se contenter que de s'assurer que la mémoire utilisée pour la variable i ne sera pas utilisée pour une autre variable, qu'elle soit déclarée avant i, ou apres...

    Il ne va donc pas s'assurer que la valeur de départ soit, d'une manière ou d'une autre, cohérente par rapport à tes souhaits, du moins, si tu ne lui dit pas de le faire...

    Cela signifie que, bien que ta variable "existe", sa valeur peut etre... tout et n'importe quoi.

    En effet, il faut bien etre conscient que, surtout sur les systèmes qui restent allumés longtemps, la mémoire à laquelle se trouve la variable i a, plus que vraissemblablement, été utilisée avant par une autre application, pour maintenir une autre valeur, qui n'était pas forcément un entier, et qui pouvait d'ailleurs très bien etre une instruction...

    Du coup, il est "de bon ton" d'"initialiser" les variables avant de les utiliser, ce qui signifie "leur donner une valeur de départ", et ce, surtout si tu n'es pas en mesue de donner sa valeur définitive à la variable au moment de sa déclaration...

    C'est particulièrement le cas avec les variable spéciales que l'on appelle "pointeurs" qui sont des variables dont la valeur est... l'adresse mémoire à laquelle trouver ce qu'on cherche

    En effet, le risque est grand avec les pointeurs qu'il "pointent" vers une adresse mémoire utilisée pour autre chose que ce qui est prévu, et toute tentative d'acces à cette adresse mémoire peut avoir des conséquences désastreuses...

    Donc, à la question "comment savoir si une variable existe", on te répondra de te fier:
    • aux déclarations que tu as faites
    • au compilateur qui te dira que telle ou telle variable n'a pas été déclarée

    Par contre, si la question est "comment savoir si telle variable a telle ou telle valeur", ben tu n'auras pas énormément le choix, il faudra tester la valeur de la variable, ou éventuellement la faire afficher
    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

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par koala01
    Le C fait partie de ces langages que l'on qualifie volontiers de "fortement typés"...
    faiblement est plus juste... C++ est fortement typé...

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  2. [LG] Contrôle d'existence d'une variable ?
    Par Aenigma dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 06h59
  3. Réponses: 3
    Dernier message: 19/08/2005, 14h24
  4. Réponses: 3
    Dernier message: 05/04/2005, 14h36
  5. [C#] Tester existence d'une variable de session
    Par IDNoires dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/12/2004, 12h30

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