C99 boolowski typ danych?

93

Jaki jest logiczny typ danych C99 i jak go używać?

eonil
źródło

Odpowiedzi:

110

Dołącz <stdbool.h>nagłówek

#include <stdbool.h>

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

Makra truei falserozwiń odpowiednio do 1i 0.

Sekcja 7.16 Typ i wartości logiczne< stdbool.h >

  • 1 Nagłówek <stdbool.h>definiuje cztery makra.
  • 2 Makro
    • bool rozwija się do _Bool.
  • 3 Pozostałe trzy makra są odpowiednie do użycia w dyrektywach #if preprocessingu. Oni są
    • prawda: która rozwija się do stałej liczby całkowitej 1,
    • false: co jest interpretowane jako stała całkowita 0, i
    • __bool_true_false_are_defined, która rozwija się do stałej liczby całkowitej 1.
  • 4 Niezależnie od postanowień punktu 7.1.3, program może cofnąć, a być może później, ponownie zdefiniować makra bool, true i false.
Prasoon Saurav
źródło
18
Należy również zauważyć, że konwersja do _Bool(przez przypisanie, rzutowanie itp.) Jest efektywna przez poprzedzanie wyrażenia przedrostkiem !!.
R .. GitHub PRZESTAŃ POMÓC W LODZIE
56

Proszę sprawdzić odpowiedź tutaj w tym powiązanym wątku znalezionym na DaniWeb .

wyodrębniono i zacytowano tutaj dla wygodnego odniesienia: -


użycie nowych słów kluczowych w c99

_Bool : typ boolowski C99. Bezpośrednie użycie _Bool jest zalecane tylko wtedy, gdy utrzymujesz starszy kod, który już definiuje makra dla bool, true lub false. W przeciwnym razie te makra są znormalizowane w <stdbool.h> nagłówku. Uwzględnij ten nagłówek i możesz używać bool tak, jak w 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
źródło
19
+1 za wyjaśnienie, dlaczego _Boolistnieje wraz z bool. Bardzo pomocne, aby to zrozumieć.
eonil