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 :

les consts ou les nombres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 59
    Par défaut les consts ou les nombres
    bonsoir,
    quel sont les differances entre ces deux code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # include <stdio.h>
    void main()
    {
    	const int max = 10;
                 printf("%d",N);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # include <stdio.h>
    void main()
    {
                 printf("%d",10);
    }
    je sais quel sagil de constante mais pourquoi tout le monde utilise




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    # include <stdio.h>
    # define N 10
    void main()
    {
    	int T[N];
     
    }
    et pas ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # include <stdio.h>
    void main()
    {
    	int T[10];
     
    }

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 082
    Par défaut
    Pour cela :

    pourquoi tout le monde utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # include <stdio.h>
    # define N 10
     
    void main()
    {
    	int T[N];
     
    }
    et pas ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # include <stdio.h>
    void main()
    {
    	int T[10];
     
    }

    C'est dans un soucis de flexibilité.

    Imagine que tu crée un tableau comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # include <stdio.h>
    int main()
    {
    	int T[10];
     
    }
    Ensuite, tu va forcement vouloir faire des opération dessus ou tu va le parcourir, par exemple pour l'afficher ou meme saisir des valeur etc, etc.

    Tu va donc avoir un code qui ressemble a ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    # include <stdio.h>
    int main()
    {
        int T[10];
        int i;
     
        for (i=0 ; i<10 ; i++)
        {
            /* une saisie par exemple */
        }
     
        for (i=0 ; i<10 ; i++)
        {
            /*affichage du tableau */
        }
     
       ...
     
    }

    Bref, tu va avoir beaucoup de chose. Et puis un beau jour, tu te dit que 10, c'etait pas specialement bon, mais que 20, se serai vachement bien et ca t'arrangerai.
    Alors tu met int T[20];

    Sauf que, tu va devoir changer tout les 10 en 20 !! Et la bonjour les emmerde comme pas permis. Sans compter qu'evidemment, tu va forcement en oublier un ou deux, ce qui fera planter ton programme.


    Par contre, si tu avais fait ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    # include <stdio.h>
     
    #define TAILLE_TABLEAU 10
     
    int main()
    {
        int T[TAILLE_TABLEAU];
        int i;
     
        for (i=0 ; i<TAILLE_TABLEAU ; i++)
        {
            /* une saisie par exemple */
        }
     
        for (i=0 ; i<TAILLE_TABLEAU ; i++)
        {
            /*affichage du tableau */
        }
     
       ...
     
    }
    Et bien lorsque tu voudra changer la taille du tableau tu aura juste a changer

    #define TAILLE_TABLEAU 10

    par

    #define TAILLE_TABLEAU 20

    Et la, si tu as bien prévu le coup, pif paf pouf, ton code s'adapte, tu n'as rien a toucher.

    Et cela apporte un supplément a la lecture du code si tu nomme bien tes define.

    Personnellement, je comprend sans ambiguïté et immédiatement le deuxième for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (i=0 ; i<10 ; i++)
    for (i=0 ; i<TAILLE_TABLEAU ; i++)

  3. #3
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Pour les premiers codes, en sortie ça ne fait aucune différence ...
    Mais dans ton premier code tu utilises une variable, et donc tu peux l'utiliser dans le reste de ton programme et modifier sa valeur
    Dans le second code tu affiches la valeur 10 et puis c'est tout ...

    Pour les derniers codes, on préfère utiliser une constante pour pouvoir l'utiliser autre part dans ton programme, et pas seulement à l'initialisation
    Imagine que tu veuilles afficher toutes les valeurs de ton tableau !
    Tu fera un for(i = 0; i < N; i++) {...}
    Si tu ne défini pas la constante N tu fera un for du style : for(i = 0; i < 10; i++) {...} mais le problème c'est que si jamais tu modifies la taille de ton tableau, il faudra que tu modifies aussi tous les 10 que tu as mis dans ton programme ... Tu risques fort d'en oublier !

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 082
    Par défaut
    Citation Envoyé par Pouet_forever Voir le message
    Mais dans ton premier code tu utilises une variable, et donc tu peux l'utiliser dans le reste de ton programme et modifier sa valeur
    Dans le second code tu affiches la valeur 10 et puis c'est tout ...
    Euh non, je suis pas tout a fait daccord.
    Voici le code sur lequel je pense que tu as fait reference en disant "premier" :

    # include <stdio.h>
    void main()
    {
    const int max = 10;
    printf("%d",N);
    }
    Il declare max comme etant une constante, donc il ne pourra plus la modifier apres.

    Et ce code ne marche pas, etant donné qu'il veut affichar la valeur de N qui n'est declarer nul part.

    Au passage, ce n'est pas

    void main

    mais

    int main

  5. #5
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    @ SofEvans : Effectivement j'ai lu trop vite ... désolé

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 59
    Par défaut
    merci vraiment pour vous !
    maintenant je comprend

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

Discussions similaires

  1. Les const et les pointeurs, un mauvais mélange ?
    Par darkrojo dans le forum Langage
    Réponses: 8
    Dernier message: 15/06/2011, 14h52
  2. Réponses: 4
    Dernier message: 11/09/2006, 16h55
  3. Les polices dans les tables et les requêts
    Par zooffy dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 11h06

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