windows - site - tag c#
Diferencia BOOL y bool? (3)
En VC ++ tenemos el tipo de datos "BOOL", que puede asumir el valor TRUE o FALSE, y tenemos el tipo de datos "bool", que puede asumir el valor verdadero o falso.
¿Cuál es la diferencia entre ellos y cuándo se debe usar cada tipo de datos?
La API de Windows tenía este tipo antes de que se lanzara bool a C ++. Y es por eso que todavía sale en todas las funciones de Windows que toman BOOL. C no es compatible con bool data-type, por lo tanto, BOOL debe permanecer.
Para agregar a lo que ha dicho luvieere, puede devolver algo que no sea TRUE o FALSE de una función que devuelve un BOOL , por ejemplo,
BOOL myFunc(int a)
{
if (a < 3) return FALSE;
else if (a > 3) return TRUE;
else return 2;
}
Y esto es posible porque un BOOL es esencialmente un int .
Tenga en cuenta que esto no es aconsejable, ya que destruye severamente la legibilidad general del código, pero es algo que puede encontrar y se preguntará por qué es así.
bool es un tipo de C ++ incorporado, mientras que BOOL es un tipo específico de Microsoft que se define como int . Lo puedes encontrar en windef.h :
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
Los valores para bool son true y false , mientras que para BOOL puede usar cualquier valor int , aunque las macros TRUE y FALSE se definen en el encabezado windef.h .
Esto significa que el operador de sizeof arrojará 1 para bool (el estándar establece, sin embargo, que el tamaño de bool está definido por la implementación), y 4 para BOOL .
Fuente: artículo de Codeguru