web-dev-qa-db-fra.com

Quelle est la différence entre BOOL et bool?

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?

35
Umesha MS

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

42
luvieere

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.

15
Ajay

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.

11
Aamir