Question:
C does not have the boolean data type by default. Is there a way by which we can implement it?
In C language, we do not have the boolean datatype by default. That means we cannot do something like
if(true) { // perform some commands } else { // perform the else commands }
We can do this in C++ and JAVA. However, we have an alternative method to achieve the same functionality. Before moving on to the implementation it is important to know that in C, if a value is ‘0 (zero)’ it is treated as false, and any other value other than ‘0’, is treated as true.
That means if we do something like
if(2) { // THIS PORTION WILL RUN } else { // this will NOT } if(0) { // this will NOT RUN } else { // THIS PORTION WILL RUN } while(1) { // an example of an infinite loop }
Thus, to implement the boolean data type we can do it by 3 methods:-
Method 1:-
typedef int bool; #define true 1 #define false 0
Method 2:-
typedef int bool; enum { false, true };
Method 3:-
typedef enum { false, true } bool;
All 3 methods, basically perform the same functionality. It assigns the value ‘1’ to true and ‘0’ to false. This way we define a custom data type. and the C pre-processor takes care of the rest of the stuff.
Here is a sample program that illustrates the use of this custom boolean datatype in C.
#include<stdio.h> //defining the boolean datatype typedef int bool; #define TRUE 1 #define FALSE 0 //defining the main function to test int main(void) { //testing the methodology if(FALSE) { printf("I CANT PRINT"); } else { printf("YOU SUCCESSFULLY IMPLEMENTED boolean DATATYPE"); } //An example of infinite loop while(TRUE) { printf("This loop will run forever"); } return 0; }