Constantes et Macros - imanegannaoui/Algorithme_C GitHub Wiki
une constante c'est comme une variable, il a un nom une valeur et bien sur une adresse; mais impossible de la modifiée au cours du programme après son initialisation, c'est un espace mémoire que pour la lecture.
const PI = 3.14 #define PI 3.14
#define min(A,B) (A < B)Dans cette exemple on a définie une constante qui vérifie que A est strictement inferieur à B
🏷️ Mathématiquement parlant :
f(x) = 2 => c'est une constante
f(x) = 2x + 1 => ce n'est pas une constantePour une optimisation de la mémoire l'utilisation des constantes est très puissant afin de mettre une variable en mode RO Ready Only
Il existe de type de mémoire, la RAM et la ROM, le langage C étant un programme qui gère aussi les mémoires dans sa simple forme, par exemple la déclaration des variables
* int : 4 octets
* double : 8 octets
* etc...RAM : random assets memory I/O, stands for input/output
ROM : read only memory
Généralement les constantes sont stockés sur la ROM
Les macros sont dans la forme une constante, mais son traitement diffère, le type boolean n'existe pas dans le langage C, or si on veut le créer on va avoir recours aux MACROS.
Prenons l'exemple Suivant
#include<stdio.h>
#define false 0 //Constante définition de false = 0
#define true !false //Constante true = !false donc true = 1
int main()
{
bool isHappy = true;
(void) isHappy;
return 0;
}le programme affichera un retour de type est unknow type bool, donc on aura besoin de définir une macro et de spécifier le type bool et le définir en étant un nouveau type comme int float ou char, on aura le programme suivant :
#include<stdio.h>
#define false 0 //Constante définition de false = 0
#define true !false //Constante true = !false donc true = 1
typedef int bool; //macro de définition d'un nouveau type bool, sans résultat de retour à la mémoire est un entier
int main()
{
bool isHappy = true;
(void) isHappy;
return 0;
}