Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AlbertoBSD en 18 Junio 2016, 15:17 pm



Título: Tipo de dato bool
Publicado por: AlbertoBSD en 18 Junio 2016, 15:17 pm
Hola.

En los libros de C que tengo nunca se mencionan los datos bool. Siempre usan un Dato entero para ellos.

Obvio es solo de C++ pero...

Ahorita busque sobre ellos y solo salen referencias vagas pero ninguna referencia oficial.

Segun esto solo encontre

Código:
El tipo bool es una incorporación reciente del lenguaje (1998)

Pero no menciona ninguna fuente. El uso de enteros como booleanos a mi me parece correcto siempre que solo los manejes como 0 y 1

Incluso creo que muchos compiladoradores hacen algo como:

Código
  1. typedef bool unsiged char;


Pero bueno las preguntas son:

¿A que estandar pertenece?
¿Donde esta la pagina de ese Estandar?

Saludos


Título: Re: Tipo de dato bool
Publicado por: do-while en 18 Junio 2016, 16:00 pm
¡Buenas!

En C, por lo que siempre he leído, cero/NULL es falso y cualquier valor distinto de cero/NULL verdadero. Suficiente para funcionar y muy útil para devolver, por ejemplo, valores de diagnostico de funcionamiento desde funciones, ya que no es lo mismo decir si una función se ha ejecutado de forma correcta o incorrecta que decir que no se ha podido asignar memoria, que se ha intentado acceder a posiciones de memoria incorrectas o que se ha intentado calcular el logaritmo de un número negativo. Así, por ejemplo, una función puede devolver un entero formado por banderas que sea cero si todo ha ido bien o que active distintos bits según se hayan encontrado errores y así poder tomar decisiones desde la función llamadora. Con un simple if(valor=funcion(...)) ya puedes empezar a discriminar casos.

Otro caso muy útil es cuando una comparación en lugar de decirte si dos elementos son iguales o distintos te da el orden, según algún tipo de criterio de ordenación, del primero con respecto al segundo (<0 si el primero es menor, == 0 si son iguales o > 0 si el primero es mayor). No hay nada menos expresivo que un valor booleano, o si o no, sin valores intermedios ni ningún tipo información extra...

¡Saludos!


Título: Re: Tipo de dato bool
Publicado por: AlbertoBSD en 18 Junio 2016, 16:45 pm
. No hay nada menos expresivo que un valor booleano, o si o no, sin valores intermedios ni ningún tipo información extra...

 ;-) ;-) Siempre he pensado asi y si asi he usafo los enteros de forma boolean.

Aun asi sigue la pregunta

¿Cual es el estandar de "bool" en lenguaje C++, si es que existe?

Saludos


Título: Re: Tipo de dato bool
Publicado por: geeke en 18 Junio 2016, 16:49 pm
En C99 se ha incorporado el tipo _Bool este solo puede contener los valores 1 y 0 si le asignas un numero mayor que uno este se igualara a uno. También se introdujo la librería stdbool.h donde dispones de bool un alias de _Bool y sus conocidas macros true y false.


Título: Re: Tipo de dato bool
Publicado por: AlbertoBSD en 18 Junio 2016, 16:58 pm
Aaa entonces es del C99 en adelante  ;-) ;-) Ya vi:

Citar
boolean type in <stdbool.h>

http://www.open-std.org/jtc1/sc22/wg14/www/newinc9x.htm

http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdbool.h.html

Muy interesante.

Saludos