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