C99 tipo de datos booleanos?

Respuestas:

109

Incluir <stdbool.h>encabezado

#include <stdbool.h>

int main(void){
  bool b = false;
}

Macros truey falsese expanden para 1y 0respectivamente.

Sección 7.16 Tipo y valores booleanos< stdbool.h >

  • 1 El encabezado <stdbool.h>de fi ne cuatro macros.
  • 2 La macro
    • bool se expande a _Bool.
  • 3 Las tres macros restantes son adecuadas para su uso en directivas de preprocesamiento #if. Son
    • verdadero: que se expande a la constante entera 1,
    • falso: que se expande a la constante entera 0, y
    • __bool_true_false_are_defined que se expande a la constante entera 1.
  • 4 No obstante las disposiciones de 7.1.3, un programa puede indefinir y quizás luego redefinir las macros bool, true y false.
Prasoon Saurav
fuente
17
También debe tenerse en cuenta que la conversión a _Bool(por asignación, conversión , etc.) se realiza efectivamente anteponiendo la expresión con !!.
R .. GitHub DEJA DE AYUDAR A ICE
52

Consulte la respuesta aquí en este hilo relacionado que se encuentra en DaniWeb .

extraído y citado aquí para una referencia conveniente: -


uso de nuevas palabras clave en c99

_Bool : tipo booleano de C99. Solo se recomienda usar _Bool directamente si mantiene un código heredado que ya define macros para bool, true o false. De lo contrario, esas macros están estandarizadas en el <stdbool.h> encabezado. Incluya ese encabezado y podrá usar bool como lo haría en C ++.

#include <stdio.h>
#include <stdbool.h>

int main ( void )
{
  bool b = true;

  if ( b )
    printf ( "Yes\n" );
  else
    printf ( "No\n" );

  return 0;
}

Evandrix
fuente
18
+1 para una explicación de por qué _Boolexiste junto con bool. Muy útil para entenderlo.
eonil