Bonjour.
Quelle est l'utilité d'utiliser des constantes dans un programme en C ?
Comment les utiliser ?
Merci de l'aide.
Bonjour.
Quelle est l'utilité d'utiliser des constantes dans un programme en C ?
Comment les utiliser ?
Merci de l'aide.
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 const int MAX = 3
comme tu a remarque pour differencier les constantes des variable la majorite utilisent les majuscules .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define MAX 3
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![]()
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.
Attention ! Tu confonds les macros et les constantes. Ce n'est PAS DU TOUT la même chose !
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.- deja sa permet de verifier si ta variable ne change pas accidentellement au cours du programme .
Et s'il n'a déclaré que des constantes, ça lui apporte quoi ?- 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 .
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.
- 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...
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.
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.
Partager