We can use these operators to define the conditions under which conditional and iterative constructs are executed. Logical operators are not(!), and(&&) and or(||) and relational operators are greater than(>), less than(<), greater than or equal to(>=), less than or equal to(<=), equal to(==) and not equal to(!=).
Logical AND example
Martha wants a program to check if her students are between a certain height - students who are too short or too tall cannot be placed on the carnival ride. She comes up with the following code:
#include <stdio.h>
int main(){
float height;
printf("Please enter your height: ");
scanf("%f",&height);
if (height<180 && height>120){
printf("You can enter the ride!\n");
}else{
printf("Please do not enter the ride\n");
}
return 0;
}
The condition height<180 && height>120 only evaluates to true when both of the comparisons evaluate to true, that is, when the height of the student is both greater than 120(height>120) and less than 180(height<180).
Logical OR example
Consider a scenario where we want to check which of a list of numbers is a multiple of 2 OR 3:
#include <stdio.h>
int main(void){
for (int number=0;number<=20;number++){
if (!(number%2==0 || number%3==0)){
printf("\033[0;41m %d - NOT DIVISIBLE by 2 or 3\n",number);
}else{
printf("\033[0;32m %d - DIVISIBLE by 2 or 3\n",number);
}
}
return 0;
}
Recall that %(the modulo operator) is used to get the remainder of a division and a number is divisible by another if the remainder is 0.
Coloring text using color codes in the terminal
Read more about coloring the text in the terminal from this C for dummies article.