Internship at OpenGenus

Go this volume -> Bug on Assortment: For Interviews and Competitive Programming

Reading time: 20 minutes

C programming linguistic communication (from C99) supports Boolean information type (bool) and internally, it was referred as _Bool every bit boolean was not a datatype in early versions of C. In C, boolean is known as bool information type. To use boolean, a header file stdbool.h must be included to use bool in C.

bool is an alias to _Bool to avoid breaking existing C lawmaking which might be using bool every bit an identifier. Yous tin learn most _Bool here in detail.

            #include <stdbool.h>                      

Note if nosotros practise not include the above header file, then we need to replace bool with _Bool and the code volition work as ordinarily.

Standard logical operators AND (&&), OR(||) and Not(!) can be used with the Boolean type in any combination.

In computer science, the Boolean data blazon is a information type that has ane of two possible values, either Truthful or FALSE. Due to two possible values, it needs only 1 bit. In actual calculating systems, the minimum corporeality of retentivity is gear up to a particular value (normally 8 $.25) which is used (all bits as 0 or 1).

Memory

An object declared as blazon Bool is big enough to store the values 0 and one.

            printf("%zu", sizeof(bool));                      

The above code will requite size i for bool, so generally bool store a 1 byte of memory. Note: it needs only 1 bit just takes 8 bits due to the structure of the computing system.

For example:

  • true is denoted as 00000001
  • false is denoted as 00000000

Declaration

To declare a variable as a boolean utilise:

            bool variable_name = truthful;                      

Example:

            #include <stdbool.h>  #include <stdio.h> int main()  {  bool a = true;   if(a)     printf("Its ture"); return 0;  }                      

Output:

            Its true                      

Bool with Logical Operators

We can use logical operators with boolean.

Types of logical operators:

  • && (AND): takes 2 booleans; returns truthful merely if both operands are true else faux
  • || (OR): returns true if either or both of the operands are true else simulated
  • ! (Not): takes one operand; return true if operand is false and false if operand is true

Example:

            #include <stdio.h> #include <stdbool.h>   int principal(void) {     bool a=true, b=faux;     printf("%d\north", a&&b);     printf("%d\northward", a||b);     printf("%d\n", !b); }                      

Output:

            0 1 1                      

Bool Array

            #include <stdbool.h>  int chief()  {    bool arr[ii] = {true, fake};    printf("Value at index one of array is %d",arr[ane]);   return 0;  }                      

Output:

            Value at alphabetize i of array is 0                      

How to convert a boolean to integer? (blazon casting)

A type cast is basically a conversion from 1 type to another.
An object declared equally type Bool is big plenty to shop the values 0 and ane.

Case:

            #include <stdio.h> #include <stdbool.h>  int main() { 	int north = 1; 	bool ten = truthful; 	n = (bool)true;; 	printf("%d",n);        //Output: 1 	return 0; }                      

There's no need to cast to bool for congenital-in types because that conversion is implicit. On converting to other integral types, a true bool will go i and a false bool will become 0.

Question

Consider the post-obit C code:

            #include <stdbool.h>  #include <stdio.h> int main()  {  bool a = true;  bool b = fake;   if(a == 1)     printf("Its ture");   else if(b == 0)     printf("B is fasle");   else     printf("Did not work!"); return 0;  }                      

What will exist the output of the above lawmaking?

Its true

B is simulated

Did not work!

Compile time mistake

Bool true is treated as ane, and imitation as 0