Dans VC++, nous avons le type de données "BOOL" qui peut prendre la valeur TRUE ou FALSE, et nous avons le type de données "bool", qui peut prendre la valeur true ou false.
Quelle est la différence entre eux et quand faut-il utiliser chaque type de données?
bool
est un type C++ intégré tandis que BOOL
est un type spécifique à Microsoft qui est défini comme int
. Vous pouvez le trouver dans windef.h
:
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
Les valeurs pour un bool
sont true
et false
, tandis que pour BOOL
vous pouvez utiliser n'importe quelle valeur de int
, bien que TRUE
et FALSE
les macros sont définies dans le windef.h
entête.
Cela signifie que l'opérateur sizeof
donnera 1 pour bool
(la norme indique cependant que la taille de bool
est définie par l'implémentation), et 4 pour BOOL
.
Source: article Codegur
L'API Windows avait ce type avant que bool
ne soit jeté en C++. Et c'est pourquoi il existe toujours dans toutes les fonctions Windows qui prennent BOOL. C ne prend pas en charge le type de données bool
, donc BOOL
doit rester.
Pour ajouter à ce que luvieere a dit, vous pouvez renvoyer autre chose que TRUE
ou FALSE
à partir d'une fonction renvoyant un BOOL
par exemple,
BOOL myFunc(int a)
{
if (a < 3) return FALSE;
else if (a > 3) return TRUE;
else return 2;
}
Et cela est possible car un BOOL
est essentiellement un int
.
Veuillez noter que ce n'est pas conseillé car cela détruit gravement la lisibilité générale du code, mais c'est quelque chose que vous pouvez rencontrer et vous vous demanderez pourquoi il en est ainsi.