Bonjour.

j'ai quelques questions sur le type BOOL en C.

Question 1:
Citation Envoyé par faq
(..) il est très simple à 'créer' si le compilateur utilisé ne le propose pas déjà.

#define TRUE 1
#define FALSE 0
typedef int BOOL;
J'ai croisé récemment dans un code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
typedef enum
{
FALSE,
TRUE
} BOOL;
ça me semble identique à la proposition de la faq, mais j'ai peur de ne pas voir une subtilité. est-ce qu'il y a un cas ou l'utilisation des 2 types BOOL ci-dessus pourrait différer?

Question 2: (edit: j'ai trouvé la réponse à cette question)
Toujours dans un code que j'ai croisé:
une fonction "MaFonction()" retourne un entier: soit 0, soit un nombre différent de 0 (mais pas forcément 1).
le programme faisait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
int returnValue;
returnValue = MaFonction();
//s'assurer que returnValue vaille 0 ou 1, et rien d'autre
returnValue = !!returnValue;
Et ça marche. Mais est-ce que cette méthode marche toujours? ou seulement sur le compilateur utilisé (visual C++ 6.0 en l'occurence)
EDIT: réponse: oui, ça marchera toujours

Question 3, et dernière:
Citation Envoyé par faq
La notation var1 && var2 correspond au test suivant : si var1 est vrai et que var2 est vrai, ..... alors que la notation var1 & var2 correspond au test suivant : si var1 contient le masque spécifié par var2, ....
mais si j'ai:
var1: 00101101
var2: 00100010
alors le var1 & var2 (c'est un "et" bit-à-bit, non?) retourne une valeur non nulle (un "true" si on veut) pourtant je n'ai pas l'impression que "var1 contienne le masque spécifié dans var2". A moins que je ne saisisse mal la notion de "contenir un masque"?

merci de votre aide

EDIT: question 2 résolue: voir ci-dessous