C originally did not have native support for boolean values.
C99, the version of C released in 1999/2000, introduced a boolean type.
To use it, however, you need to import a header file, so I’m not sure we can technically call it “native”. Anyway, we do have a bool type.
You can use it like this:
#include <stdio.h>
#include <stdbool.h>
int main(void) {
bool isDone = true;
if (isDone) {
printf("done\n");
}
isDone = false;
if (!isDone) {
printf("not done\n");
}
}
If you’re programming the Arduino, you can use bool without including stdbool because bool is a valid and built-in C++ data type, and the Arduino Language is C++.
In plain C, remember to #include <stdbool.h> otherwise you’ll get a bunch of errors at declaration and any time you use the bool variable:
➜ ~ gcc hello.c -o hello; ./hello
hello.c:4:3: error: use of undeclared identifier
'bool'
bool isDone = true;
^
hello.c:5:7: error: use of undeclared identifier
'isDone'
if (isDone) {
^
hello.c:8:8: error: use of undeclared identifier
'isDone'
if (!isDone) {
^
3 errors generated.
Lessons in this unit:
| 0: | Introduction |
| 1: | Input and output |
| 2: | Variable scope |
| 3: | Static variables |
| 4: | Global variables |
| 5: | Type definitions |
| 6: | Enumerations |
| 7: | Structures |
| 8: | Command line parameters |
| 9: | Header files |
| 10: | The preprocessor |
| 11: | NULL values |
| 12: | ▶︎ Boolean values |
| 13: | Nesting functions |
| 14: | Conversion specifiers |
| 15: | Using quotes |
| 16: | String length |
| 17: | Returning strings |
| 18: | Array length |
| 19: | Looping through arrays |
| 20: | Checking character values |
| 21: | Printing percentage signs |
| 22: | Troubleshooting: Implicit function declarations |