Relational and Logical

Loading concept...

🎯 C Language: Relational & Logical Operators

The Gatekeeper Story

Imagine you’re a gatekeeper at a magical castle. Your job? Decide who gets in! 🏰

You have special powers:

  • Compare things (Is this person tall enough? Is their ticket valid?)
  • Combine decisions (They need a ticket AND be on the list)
  • Take shortcuts (If the first check fails, why bother with the rest?)

This is exactly what Relational and Logical operators do in C!


🔍 Part 1: Relational Operators

What Are They?

Relational operators compare two things and answer: TRUE (1) or FALSE (0).

Think of them as questions:

  • Is 5 bigger than 3? → YES (true)
  • Is 2 equal to 7? → NO (false)

The Six Comparison Heroes

Operator Meaning Question It Asks
== Equal to Are they the same?
!= Not equal Are they different?
< Less than Is left smaller?
> Greater than Is left bigger?
<= Less or equal Is left smaller or same?
>= Greater or equal Is left bigger or same?

Real Examples

int age = 10;
int limit = 18;

age == limit  // 0 (false) - 10 is not 18
age != limit  // 1 (true)  - 10 is different from 18
age < limit   // 1 (true)  - 10 is less than 18
age > limit   // 0 (false) - 10 is not greater than 18
age <= 10     // 1 (true)  - 10 equals 10
age >= 5      // 1 (true)  - 10 is greater than 5

⚠️ Common Trap: = vs ==

// WRONG! This assigns, not compares
if (x = 5)  // Sets x to 5, always true!

// RIGHT! This compares
if (x == 5) // Checks if x equals 5

Remember: Double equals == for checking, single = for setting!


🔗 Part 2: Logical Operators

What Are They?

Logical operators combine conditions. They answer bigger questions by joining smaller ones.

The Three Logic Masters

Operator Name Meaning
&& AND Both must be true
|| OR At least one true
! NOT Flip the answer

Think Like a Gatekeeper

AND (&&) - The Strict Guard 👮

“You need a ticket AND be on the guest list. Missing one? No entry!”

int hasTicket = 1;
int onList = 1;

hasTicket && onList  // 1 (true) - Both are true
int hasTicket = 1;
int onList = 0;

hasTicket && onList  // 0 (false) - One is false

OR (||) - The Friendly Guard 🤗

“Got a ticket OR on the list? Either works, come on in!”

int hasTicket = 0;
int onList = 1;

hasTicket || onList  // 1 (true) - One is true
int hasTicket = 0;
int onList = 0;

hasTicket || onList  // 0 (false) - Both false

NOT (!) - The Opposites Guard 🔄

“Whatever the answer is, flip it!”

int isClosed = 0;

!isClosed  // 1 (true) - Not closed = open!

Truth Tables Made Simple

AND Truth Table:

true  && true  = true
true  && false = false
false && true  = false
false && false = false

Only ALL true = true

OR Truth Table:

true  || true  = true
true  || false = true
false || true  = true
false || false = false

ANY true = true

NOT Truth Table:

!true  = false
!false = true

Always flip!


⚡ Part 3: Short-Circuit Evaluation

The Smart Shortcut

C is clever! It stops checking early when the answer is already decided.

How It Works

AND Short-Circuit:

If the first part is FALSE, the whole AND is FALSE. Why check more?

int a = 0;
int b = 5;

// C sees a is 0 (false)
// Stops! Doesn't even look at b
a && b  // Result: 0 (false)

OR Short-Circuit:

If the first part is TRUE, the whole OR is TRUE. Done!

int a = 1;
int b = 0;

// C sees a is 1 (true)
// Stops! Doesn't check b
a || b  // Result: 1 (true)

Why Does This Matter?

It prevents crashes!

int *ptr = NULL;

// SAFE! If ptr is NULL, stops before dereferencing
if (ptr != NULL && *ptr > 0) {
    // This code only runs if ptr is valid
}

Without short-circuit, *ptr would crash the program!

It saves time!

// Expensive function only called if needed
if (quickCheck() || slowExpensiveCheck()) {
    // If quickCheck passes, slowCheck never runs
}

Visualizing Short-Circuit

graph TD A[Start: a && b] --> B{Is a true?} B -->|No| C[Return FALSE<br>Skip b!] B -->|Yes| D{Is b true?} D -->|No| E[Return FALSE] D -->|Yes| F[Return TRUE]
graph TD A[Start: a || b] --> B{Is a true?} B -->|Yes| C[Return TRUE<br>Skip b!] B -->|No| D{Is b true?} D -->|No| E[Return FALSE] D -->|Yes| F[Return TRUE]

🎮 Combining Everything

Real-World Example: Theme Park Entry

int age = 12;
int height = 140;      // cm
int hasParent = 1;
int hasTicket = 1;

// Can ride the roller coaster?
// Need ticket AND (be 18+ OR have parent) AND height >= 130

int canRide = hasTicket &&
              (age >= 18 || hasParent) &&
              height >= 130;

// canRide = 1 (true)
// Has ticket? Yes!
// 18+ OR has parent? Yes (has parent)!
// Height >= 130? Yes (140)!

Operator Precedence

From highest to lowest:

  1. ! (NOT) - Evaluated first
  2. < > <= >= (Comparisons)
  3. == != (Equality)
  4. && (AND)
  5. || (OR)

Tip: When in doubt, use parentheses () to be clear!

// Confusing
a || b && c

// Clear
a || (b && c)  // Same result, easier to read

🌟 Key Takeaways

  1. Relational operators compare values → return 1 (true) or 0 (false)
  2. == checks equality, = assigns (don’t mix them!)
  3. && (AND) needs ALL conditions true
  4. || (OR) needs ANY condition true
  5. ! (NOT) flips true↔false
  6. Short-circuit stops early when answer is known
  7. Use short-circuit to prevent errors and save time

🚀 You’re Ready!

You now understand how C makes decisions! Like a smart gatekeeper, you can:

  • ✅ Compare any values
  • ✅ Combine conditions
  • ✅ Take clever shortcuts

Next step: Practice writing conditions and watch your programs make smart choices!

Loading story...

No Story Available

This concept doesn't have a story yet.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

Interactive Preview

Interactive - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Interactive Content

This concept doesn't have interactive content yet.

Cheatsheet Preview

Cheatsheet - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Cheatsheet Available

This concept doesn't have a cheatsheet yet.

Quiz Preview

Quiz - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Quiz Available

This concept doesn't have a quiz yet.