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 :

utilisation de constantes


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut utilisation de constantes
    Bonjour.

    Quelle est l'utilité d'utiliser des constantes dans un programme en C ?

    Comment les utiliser ?

    Merci de l'aide.

  2. #2
    Membre très actif Avatar de elmcherqui
    Profil pro
    Inscrit en
    Février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2008
    Messages : 281
    Par défaut
    deja on les appelle constantes parceque elles ne changent pas au cours de l'execution du programme .
    on peut les declarer soit :
    imaginons qu'on veuille creer une constante MAX egale a 3
    ou bien
    comme tu a remarque pour differencier les constantes des variable la majorite utilisent les majuscules .
    pour l'utilite :
    - deja sa permet de verifier si ta variable ne change pas accidentellement au cours du programme .
    - imaginons que tu utilise plusieurs fois le chiffre 4 dans le programme , et que tu change d'avis et que tu veut utiliser 5 et bien l'avantage de declarer une constante est de t'eviter de fouiller dans ton code pour trouver le chiffre 4 et le remplacer par 5 , alors qu'il suffisais juste de changer la constante .
    en esperant t'avoir aide

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut
    Oui c'est tout bon!

    Merci beaucoup!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut
    juste encore une chose: que signifie cela: 'A' ??

  5. #5
    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
    Le caractère A majuscule, ou plus précisément son code.
    • En ASCII, ASCII étendu et Unicode, 'A' correspond à 65.
    • En EBCDIC, aucune idée.
    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.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par elmcherqui Voir le message
    comme tu a remarque pour differencier les constantes des variable la majorite utilisent les majuscules .
    pour l'utilite :
    Attention ! Tu confonds les macros et les constantes. Ce n'est PAS DU TOUT la même chose !

    - deja sa permet de verifier si ta variable ne change pas accidentellement au cours du programme .
    Pour cela, tu utiliseras plutôt les facilités de ton debugger, qui est prévu, entre autres choses, pour suivre la valeur des registres de ton choix.

    - imaginons que tu utilise plusieurs fois le chiffre 4 dans le programme , et que tu change d'avis et que tu veut utiliser 5 et bien l'avantage de declarer une constante est de t'eviter de fouiller dans ton code pour trouver le chiffre 4 et le remplacer par 5 , alors qu'il suffisais juste de changer la constante .
    Et s'il n'a déclaré que des constantes, ça lui apporte quoi ?

    D'une part, donc, les noms écrits en majuscules servent généralement à représenter les macros définies avec #define. Celles-ci peuvent éventuellement représenter, à leur tour, des variables, des constantes ou, le plus souvent, les valeurs elles-mêmes. Ces macros sont entièrement résolues par le précompilateur et n'existent plus en tant que telles dans le code final.

    En revanche, une constante en C va être bâtie exactement comme une variable, donc elle aura un emplacement en mémoire (et on pourra mettre un pointeur dessus également). Les raisons de définir une constante plutôt qu'une variables sont les suivantes :

    - Lorsque les données qu'elle contient ne peuvent ou ne doivent être modifiées.
    - Pour que le compilateur puisse les placer dans un segment de mémoire en lecture seule (sur certains systèmes, la RAM est une ressource précieuse et limitée).
    - De façon à conserver leur nature lorsque ces constantes sont impliquées dans des expressions très compliquées.

    Un exemple typique de constante implicite est la chaîne de caractères entre guillemets :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    const char * chaine = "Hello world";
    .

    La chaîne est retrouvée par son emplacement, mais les caractères qu'elle contient ne peuvent être modifiés, et son type doit donc être défini en conséquence.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Par défaut
    - Lorsque les données qu'elle contient ne peuvent ou ne doivent être modifiées.
    - Pour que le compilateur puisse les placer dans un segment de mémoire en lecture seule (sur certains systèmes, la RAM est une ressource précieuse et limitée).
    - De façon à conserver leur nature lorsque ces constantes sont impliquées dans des expressions très compliquées.


    pour la 1ere je dirai que c'est toi qui code tu fait gaffe c'est tout...


    pour la 2ème je suis parfaitement d'accord mais une question persiste: de toutes fassons ta constante est dans la mémoire(RAM)? c'est bien le système (sous windows c'est le PEloader) qui charge l'éxécutable d'ou moin une partie en mémoire réel(l'autre étant dans la mémoire virtuelle) et qui décide qu'elle partie sera en lecture seule lecture/ecriture ou sera la pile etc... non?

    pour la 3eme revenir a la 1ere

    Pour moi, l'opérateur const est pratique que pour la deuxieme raison...

  8. #8
    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 lapinoudu33 Voir le message
    de toutes façons ta constante est dans la mémoire(RAM)? <...>
    Non.
    • Une constante est dans le code, associée au code machine
    • Une variable à lecture seule est probablement dans un segment de mémoire à lecture seule
    • Une variable lecture/écriture est dans un segment de mémoire à lecture/écriture.

    C'est à peu près tout ce qu'on peut dire. Le reste dépend de l'implémentation.

  9. #9
    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 lapinoudu33 Voir le message
    pour la 1ere je dirai que c'est toi qui code tu fait gaffe c'est tout...

    pour la 3eme revenir a la 1ere
    Un compilateur décent correctement configuré te signalera si tu tentes de modifier une "constante". de ce fait la remarque de Obsidian est tout a fait pertinente.

    Je rajouterais que l'utilisation du mot clé const pour les "variables constantes" a en outre un effet documentaire non négligeable.

  10. #10
    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 gl Voir le message
    Je rajouterais que l'utilisation du mot clé const pour les "variables constantes" a en outre un effet documentaire non négligeable.
    Je préfère le terme 'variables à lecture seule', car il s'agit bien d'une variable (ou objet, qui a donc une adresse).

    Une constante n'a pas d'adresse.

Discussions similaires

  1. [JSTL] <c:if> Utilisation de constantes static
    Par ncachet dans le forum Taglibs
    Réponses: 3
    Dernier message: 30/01/2007, 14h32
  2. Utiliser une constante dans un texte
    Par 78alex78 dans le forum Langage
    Réponses: 1
    Dernier message: 08/01/2007, 15h23
  3. [utilisation de constante] erreur C2051
    Par ZaaN dans le forum C++
    Réponses: 3
    Dernier message: 06/11/2006, 13h17
  4. [XSLT] utilisation de constantes.
    Par the_edge dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/08/2006, 12h49
  5. Utiliser une constante dans une requête
    Par Nabouille dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2006, 13h09

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