What is the C99 _Bool data type and how do you use it?

boolean, c, c99, types

Solution

Include `<stdbool.h>` header

#include <stdbool.h>

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

Macros `true` and `false` expand to `1` and `0` respectively.

Section `7.16` Boolean type and values `< stdbool.h >`

- 1 The header `<stdbool.h>` defines four macros.

- 2 The macro

- bool expands to _Bool.

- 3 The remaining three macros are suitable for use in #if preprocessing directives. They are

- true : which expands to the integer constant 1,

- false: which expands to the integer constant 0, and

- __bool_true_false_are_defined which expands to the integer constant 1.

- 4 Notwithstanding the provisions of 7.1.3, a program may undefine and perhaps then redefine the macros bool, true, and false.

Problem

What is the C99 `_Bool` data type and how do you use it?

Original source