Bird
Raised Fist0
Cprogramming~5 mins

Logical operators

Choose your learning style10 modes available
Introduction
Logical operators help you make decisions by combining true or false conditions.
Checking if two conditions are both true, like if you have enough money and time to buy something.
Deciding if at least one condition is true, like if you are hungry or thirsty.
Making sure a condition is not true, like if a door is not locked before opening it.
Syntax
C
expression1 && expression2  // AND operator
expression1 || expression2  // OR operator
!expression               // NOT operator
&& means AND: true only if both expressions are true.
|| means OR: true if at least one expression is true.
! means NOT: reverses true to false and false to true.
Examples
Checks if a person is an adult and has an ID.
C
if (age >= 18 && hasID) {
    // code runs if age is 18 or more AND hasID is true
}
Runs code if either condition is true.
C
if (isSunny || isWeekend) {
    // code runs if it is sunny OR it is weekend
}
Runs code only when it is not raining.
C
if (!isRaining) {
    // code runs if it is NOT raining
}
Sample Program
This program uses logical operators to decide if someone can enter a club, if they can go outside, and if they should take an umbrella.
C
#include <stdio.h>

int main() {
    int age = 20;
    int hasID = 1; // 1 means true, 0 means false
    int isSunny = 0;
    int isWeekend = 1;

    if (age >= 18 && hasID) {
        printf("You can enter the club.\n");
    } else {
        printf("You cannot enter the club.\n");
    }

    if (isSunny || isWeekend) {
        printf("You can go outside.\n");
    } else {
        printf("Better stay inside.\n");
    }

    if (!isSunny) {
        printf("Don't forget your umbrella!\n");
    }

    return 0;
}
OutputSuccess
Important Notes
In C, 0 means false and any non-zero value means true.
Logical operators evaluate expressions from left to right and stop early if the result is known (short-circuit).
Use parentheses to group conditions clearly.
Summary
Logical operators combine true/false conditions to make decisions.
&& means AND, || means OR, and ! means NOT.
They help control the flow of your program based on multiple conditions.

Practice

(1/5)
1. Which logical operator in C means AND and returns true only if both conditions are true?
easy
A. !
B. ||
C. &&
D. &

Solution

  1. Step 1: Understand logical AND operator

    The logical AND operator (&&) returns true only if both conditions it connects are true.
  2. Step 2: Compare with other operators

    The || operator means OR, ! means NOT, and & is bitwise AND, not logical AND.
  3. Final Answer:

    && -> Option C
  4. Quick Check:

    AND = && [OK]
Hint: AND operator is double ampersand && [OK]
Common Mistakes:
  • Confusing & (bitwise) with && (logical)
  • Mixing OR and AND operators
  • Using ! for AND
2. Which of the following is the correct syntax to negate a condition in C?
easy
A. condition !
B. !condition
C. not condition
D. condition != true

Solution

  1. Step 1: Identify negation syntax in C

    The NOT operator in C is a single exclamation mark placed before the condition: !condition.
  2. Step 2: Check other options

    condition ! places ! after condition which is invalid, C uses 'not' which is not C syntax, D is a comparison, not negation.
  3. Final Answer:

    !condition -> Option B
  4. Quick Check:

    NOT = ! before condition [OK]
Hint: Negate condition with ! before it [OK]
Common Mistakes:
  • Putting ! after condition
  • Using 'not' keyword
  • Confusing != with negation
3. What is the output of this C code?
int a = 5, b = 10;
if (a > 3 && b < 15) {
printf("True\n");
} else {
printf("False\n");
}
medium
A. No output
B. False
C. Compilation error
D. True

Solution

  1. Step 1: Evaluate first condition (a > 3)

    a is 5, which is greater than 3, so this condition is true.
  2. Step 2: Evaluate second condition (b < 15)

    b is 10, which is less than 15, so this condition is true.
  3. Step 3: Apply logical AND (&&)

    Both conditions are true, so the combined condition is true, entering the if block.
  4. Final Answer:

    True -> Option D
  5. Quick Check:

    True && True = True [OK]
Hint: Both conditions true means && condition is true [OK]
Common Mistakes:
  • Assuming OR instead of AND
  • Misreading variable values
  • Ignoring logical operator precedence
4. Find the error in this C code snippet:
int x = 0;
if (x = 5 || x == 0) {
printf("Yes\n");
}
medium
A. Using assignment '=' instead of comparison '==' in if condition
B. Missing semicolon after printf statement
C. Incorrect use of logical AND instead of OR
D. Variable x is not declared

Solution

  1. Step 1: Check the if condition syntax

    The condition uses 'x = 5 || x == 0'. The '=' is assignment, not comparison.
  2. Step 2: Understand effect of assignment in condition

    Assignment returns the assigned value (5), which is true, so condition always true, likely a bug.
  3. Final Answer:

    Using assignment '=' instead of comparison '==' in if condition -> Option A
  4. Quick Check:

    Use '==' for comparison, not '=' [OK]
Hint: Use '==' to compare, '=' assigns value [OK]
Common Mistakes:
  • Confusing '=' and '=='
  • Ignoring logical operator precedence
  • Assuming code won't compile
5. Given the code below, what will be printed?
int a = 0, b = 1, c = 2;
if (!(a || b) && c > 1) {
printf("Inside if\n");
} else {
printf("Inside else\n");
}
hard
A. Inside else
B. Inside if
C. Compilation error
D. No output

Solution

  1. Step 1: Evaluate inner OR condition (a || b)

    a is 0 (false), b is 1 (true), so a || b is true.
  2. Step 2: Apply NOT operator !(a || b)

    NOT true is false, so this part is false.
  3. Step 3: Evaluate c > 1

    c is 2, which is greater than 1, so true.
  4. Step 4: Combine with AND: false && true

    False AND anything is false, so condition is false, else block runs.
  5. Final Answer:

    Inside else -> Option A
  6. Quick Check:

    !(true) && true = false [OK]
Hint: NOT true is false; AND with false is false [OK]
Common Mistakes:
  • Ignoring NOT operator effect
  • Misreading OR condition
  • Assuming if block runs when condition false
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard