Programmantion c

Bonjour,
s'il vous plait pourrez vous m'expliquer quelle la difference entre une constante definie avec le #define et constante definie dans le code source..... exemple:
#define age = 18
et const int age =18
Configuration: Windows XP
Firefox 2.0.0.12

14 réponses

  1. Bonjour,

    En fait #define age = 18 n'est pas une constante, c'est une directive de précompilation, c'est à dire qu'avant de compiler le code source, le compilateur remplace toutes les occurrences du mot age par le mot 18. Dons age n'occupe pas de place en mémoire au moment de l'exécution. D'ailleurs c'est pas autorisé d'écrire age = i++ ; parce que age n'est pas un identifiant et n'a pas d'adresse.
    Par contre Const int age=18; définit bien une variable de type entier initialisé à 18. Dans ce cas age à une adresse mémoire et donc peut etre accessible en lecture mais pas en écriture.

    J'espère que c'est plus clair pour toi.
    Salut.
    1. oui c'est un peu plus clair...merci...
      jai aussi des problemes avec les IDE que j'utilise a savoir code blocks et Dev c++...lorsque je compile et j'execute mon code source la console apparait quelque fractions de seconde et disparait..a quoi est du cela????
      1. Bonjour,

        Je pense que c'est parce que, dés que l'exécution du programme est finie, l'IDE reprend la main et la fenêtre d'exécution disparait. Il doit certainement y avoir une option qui laisse la fenêtre d'exécution affichée ou qui permet de basculer d'une fenêtre à l'autre. Un astuce consiste à terminer ton programme par l'instruction getch(); c'est à dire que le prog attend un caractère au clavier avant de continuer, ça permet de voir le résultat de l'affichage.

        Salut.
        1. vous avez certainement raison parce moi je termine chaque fois mes programmes par return 0...alors kel est la difference entre les deux et kel est le meilleur????detaillez un peu!!!
          quand on utilise getch() queskil fo mettre au debut(le type de la fonction main)????
          1. La fonction getch() attend qu'un caractère soit disponible au clavier et place éventuellement le caractère dans une variable de type char, ex:
            c=getch(); c reçoit le caractère (le code de la touche) qui à été frappée au clavier
            getch(); idem mais sans affecter la caractère à une variable.
            La fonction getch() n'est pas faite pour terminer un programme. Placée en dernière instruction, c'est juste une astuce de programmation pour laisser le temps au programmeur de voir le résultat de l'affichage à l'écran avant qu'il ne disparaisse. Une fois le programme débogué, on l'enlève si elle ne sert à rien.
            Par contre la fonction return (n) doit terminer le programme. La valeur n (pas forcement 0) est le code de retour du programme qui est passé au système d'exploitation (DOS). Elle peut être évaluée par l'OS grâce à la variable ERRORLEVEL pour savoir si l'exécution s'est bien passé ou si le prog a été interrompu pour cause d'erreur, par exemple, et donc faire telle ou telle action. La valeur de (n) dépend de la déclaration de la fonction main(): int main() doit retouner un entier, void main() ne retourne rien, etc... En géréral return 0 veut dire tout s'est bien passé. Mais c'est le programmeur qui décide.

            Voila pour le petit cours. Je te conseille vivement de lire un bouquin sur le C, bien plus détaillé et précis que tout ce que je pourrai te dire. Salut.
            1. merci cest gentil...jai deja parcouru siteduzero.com partiellement..il est trè riche..mais je lai pa encore terminé..selon vous Quel IDE dois-je utiliser???surtout si je veux faire de la programmation reseau(les sockets)....
              1. salut tous le monde
                j'ai des probleme avec le site des compilateure c que tu m'offre
                et si peut faire une remarque sur le dev c++ ;il est plein de default;est on a rencontres des probleme au niveau des pointeure
                et l'utilisation de la fonction new
                merci pour tout
                1. Modérateur
                  Salut,

                  Par contre Const int age=18; définit bien une variable de type entier initialisé à 18.

                  Pas tout à fait.

                  Une constante n'est pas une variable.
                  Bref, une constante c'est un emplacement mémoire non modifiable, tandis que une variable c'est un emplacement mémoire modifiable.

                  Ce qu'on défini avec #define on l'appele constante symbolique
                  1. bonjour
                    je suis débutant en langage C
                    mon question est : comment convertir une chaine de charactaire en un entier
                    exemple
                    int y;
                    char x[10];
                    printf("tappez la date ") ;
                    scanf("%s",x);
                    si j'ai tappé par exemple 10
                    donc x prend "10"
                    je veux menant que y prend 10 comme chiffre
                    merci de votre explication
                    1. c'est pas tres clair...
                      tu veux faire quoi exactement ?
                    2. salut eigeneyes

                      Tout d'abord ton problème n'a pas de rapport avec le problème de ce sujet. Crée un autre sujet afin de ne pas rendre le forum impossible à lire. Un sujet = une question (ou plusieurs questions par rapport au meme problème, ce n'est pas le cas ici).

                      Et comme l'a dit mype, ton message n'est pas très clair. Mais je crois avoir compris : tu cherches à convertir un chaine de caractere char[] en un nombre.

                      Je te proposes d'aller voir sur la FAQ C de developpez.net, il me semble qu'il y a tout expliqué à ce propos.

                      https://c.developpez.com/faq/

                      PS : ici : https://c.developpez.com/faq/?page=Les-chaines-de-caracteres#STRINGS_numtostr
                    3. bonjours
                      tout d'abord pour lire un caractère de type char en entier il faut simplement écrire :
                      printf("entrer le caractéère :");
                      scanf("%d",&x);
                      sinon il y a une fonction s'appel "atoi(chaine): qui permet de covertir la chaine vers le nombre entier si c'est possible
                      exemple "123" c'est 123
                      et il y a atof(chaine) permet la convertion vers 1 nombre réel si c'est possible
                      exemple "123.12" devient 123.12
                  2. merci Mr mype et pacorabanix
                    c'est ca mon question
                    comment convertir une chaine a un nombre