Boolescher Datentyp C99?

93

Was ist der boolesche Datentyp C99 und wie wird er verwendet?

eonil
quelle

Antworten:

109

<stdbool.h>Header einschließen

#include <stdbool.h>

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

Makros trueund falseerweitert 1und 0jeweils.

Abschnitt 7.16 Boolescher Typ und Werte< stdbool.h >

  • 1 Der Header definiert <stdbool.h>vier Makros.
  • 2 Das Makro
    • bool wird zu _Bool erweitert.
  • 3 Die verbleibenden drei Makros eignen sich zur Verwendung in # if-Vorverarbeitungsanweisungen. Sie sind
    • true: wird auf die Ganzzahlkonstante 1 erweitert,
    • false: wird auf die Ganzzahlkonstante 0 erweitert, und
    • __bool_true_false_are_defined, das auf die Ganzzahlkonstante 1 erweitert wird.
  • 4 Ungeachtet der Bestimmungen von 7.1.3 kann ein Programm die Makros bool, true und false unterdefinieren und möglicherweise neu definieren.
Prasoon Saurav
quelle
17
Es sollte auch beachtet werden, dass die Konvertierung in _Bool(durch Zuweisung, Besetzung usw.) effektiv durch das Präfixieren des Ausdrucks mit erfolgt !!.
R .. GitHub STOP HELPING ICE
52

Bitte überprüfen Sie die Antwort hier in diesem verwandten Thread auf DaniWeb .

extrahiert und hier als bequeme Referenz zitiert: -


Verwendung neuer Schlüsselwörter in c99

_Bool : Der boolesche Typ von C99. Die direkte Verwendung von _Bool wird nur empfohlen, wenn Sie Legacy-Code verwalten, der bereits Makros für bool, true oder false definiert. Andernfalls werden diese Makros im <stdbool.h> Header standardisiert . Wenn Sie diesen Header einschließen, können Sie bool wie in C ++ verwenden.

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

int main ( void )
{
  bool b = true;

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

  return 0;
}

evandrix
quelle
18
+1 zur Erklärung, warum _Boolzusammen mit existiert bool. Sehr hilfreich, um es zu verstehen.
Eonil