Logical operators in C

Relational operators are good at comparing two quantities. However, relational operators does not support comparison of three or more quantities.

For example, suppose you need to check range of a number. You need to check whether a number n is in between 1-100 or not. For that you must check two conditions, first check if n > 1 finally check if n < 100.

We use logical operators to combine two or more relational expressions as a single relational expression. Logical operators evaluates a Boolean value (integer in case of C) depending upon the operator used.

C supports three logical operators.

&&Logical AND
||Logical OR
!Logical NOT

Logical AND && operator

Logical AND && is a binary operator. It combines two relational expressions and evaluates 1 (true) if both the expressions are true otherwise 0 (false).

We use logical AND operator in situations when two or more conditions must be true for a decision. For example, “He is eligible for job, if he knows C and he has an experience of more than 2 years”. We can write the above statement programmatically as –

if (skill == ‘C’ && experience >= 2)
    //He is eligible for job

Note: Don’t confuse logical AND & with bitwise AND &.

Logical OR || operator

Logical OR || is also a binary operator. Logical OR operator is used in situations, when a decision is to be taken if any of two conditions is satisfied.

It evaluates to 1 (true) if any of the two expressions is true otherwise evaluates to 0 (false). Logical OR operators are useful when either of the two relational expressions needs to be true. For example – consider the statement “It is weekend, if it is Saturday or Sunday”. We can write the given statement programmatically as –

if(today == Saturday || today == Sunday)
    // It is weekend

Note: Don’t confuse logical OR || with bitwise OR |.

Logical NOT ! operator

Logical NOT ! is a unary operator that takes single operand and evaluates complement of its operand expression. It evaluates to 1 (true) if the operand is 0 (false) otherwise evaluates to 0 (false).

Let us take an example to understand – consider the statement “A person can register to my website, if he is not registered yet”. Programmatic representation of the given statement is –

    // Register the person