J'ai vu des définitions en C
#define TRUE (1==1)
#define FALSE (!TRUE)
Est-ce nécessaire ? Quel est l'avantage de définir simplement VRAI comme 1, et FAUX comme 0 ?
J'ai vu des définitions en C
#define TRUE (1==1)
#define FALSE (!TRUE)
Est-ce nécessaire ? Quel est l'avantage de définir simplement VRAI comme 1, et FAUX comme 0 ?
La différence pratique est nulle. 0
est évalué à false
et 1
est évalué à true
. Le fait que vous utilisiez un expression booléenne ( 1 == 1
) ou 1
pour définir true
ne fait pas de différence. Les deux sont évalués à int
.
Remarquez que la bibliothèque standard C fournit un en-tête spécifique pour définir les booléens : stdbool.h
.
Nous ne connaissons pas la valeur exacte à laquelle TRUE est égal et les compilateurs peuvent avoir leurs propres définitions. Donc ce que vous privode est d'utiliser celle interne du compilateur pour la définition. Ceci n'est pas toujours nécessaire si vous avez de bonnes habitudes de programmation mais peut éviter des problèmes pour un mauvais style de codage, par exemple :
si ( (a > b) == VRAI)
Cela peut être un désastre si vous définissez manuellement TRUE comme 1, alors que la valeur interne de TRUE est une autre.
Typiquement, dans le langage de programmation C, 1 est défini comme vrai et 0 est défini comme faux. C'est pourquoi vous voyez souvent ce qui suit :
#define TRUE 1
#define FALSE 0
Cependant, tout nombre différent de 0 sera également évalué comme vrai dans une déclaration conditionnelle. Par conséquent, en utilisant la formule ci-dessous :
#define TRUE (1==1)
#define FALSE (!TRUE)
Vous pouvez simplement montrer explicitement que vous essayez de jouer la sécurité en rendant faux égal à ce qui n'est pas vrai.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.