Bird
Raised Fist0
Cprogramming~10 mins

Nested conditional statements - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Nested conditional statements
Start
↓
Check Condition A
|Yes↓
Check Condition B
|Yes↓
Execute Block 1
↓
End
No↓
Execute Block 2
↓
End
No↓
Execute Block 3
↓
End
First, check the outer condition. If true, check the inner condition. Depending on inner condition, execute one block. If outer condition is false, execute another block.
Execution Sample
C
int x = 10;
int y = 20;
if (x > 5) {
  if (y > 15) {
    printf("Both conditions true\n");
  } else {
    printf("Only x > 5\n");
  }
} else {
  printf("x <= 5\n");
}
This code checks if x is greater than 5, then inside that, checks if y is greater than 15, printing messages accordingly.
Execution Table
StepCondition CheckedResultBranch TakenOutput
1x > 5 (10 > 5)TrueEnter inner if
2y > 15 (20 > 15)TruePrint 'Both conditions true'Both conditions true
3End of if-else---
💡 All conditions evaluated; program ends after printing message.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
x10101010
y20202020
Key Moments - 2 Insights
Why does the program check y > 15 only after confirming x > 5?
Because the inner if is nested inside the outer if, so y > 15 is checked only if x > 5 is true (see execution_table step 1 and 2).
What happens if x <= 5?
The program skips the inner if and executes the else block for the outer if (not shown in this run, but would print 'x <= 5').
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output at step 2?
A"x <= 5"
B"Only x > 5"
C"Both conditions true"
DNo output
💡 Hint
Check the Output column at step 2 in the execution_table.
At which step does the program decide not to check y > 15?
AStep 2
BStep 1
CStep 3
DNever
💡 Hint
If x > 5 is false at step 1, inner condition y > 15 is skipped.
If x was 3, what would be the output?
A"x <= 5"
B"Only x > 5"
C"Both conditions true"
DNo output
💡 Hint
Refer to key_moments about what happens if x <= 5.
Concept Snapshot
Nested conditionals check one condition inside another.
Syntax: if (cond1) { if (cond2) { ... } else { ... } } else { ... }
Inner condition runs only if outer is true.
Use to test multiple related conditions step-by-step.
Full Transcript
This example shows nested conditional statements in C. First, the program checks if x is greater than 5. If yes, it then checks if y is greater than 15. Depending on these checks, it prints different messages. The execution table traces these steps, showing conditions checked, results, branches taken, and output. Variables x and y remain unchanged during execution. Key moments clarify why inner conditions depend on outer ones and what happens if the outer condition is false. The quiz tests understanding of output and flow based on the execution trace.

Practice

(1/5)
1.

What does a nested conditional statement in C allow you to do?

Choose the best description.

easy
A. Define a function inside another function
B. Check a condition inside another condition
C. Repeat a block of code multiple times
D. Create a variable that changes type

Solution

  1. Step 1: Understand the meaning of nested conditionals

    Nested conditionals mean putting one if or else if statement inside another if or else if block.
  2. Step 2: Compare with other options

    Repeating code is done by loops, not conditionals. Functions inside functions or variable type changes are unrelated.
  3. Final Answer:

    Check a condition inside another condition -> Option B
  4. Quick Check:

    Nested conditionals = condition inside condition [OK]
Hint: Nested means inside another condition [OK]
Common Mistakes:
  • Confusing nested conditionals with loops
  • Thinking nested means changing variable types
  • Mixing nested conditionals with function definitions
2.

Which of the following is the correct syntax for a nested if statement in C?

if (x > 0) {
    if (y < 10) {
        // code
    }
}
easy
A. if x > 0 { if (y < 10) { /* code */ } }
B. if (x > 0) if (y < 10) { /* code */ }
C. if (x > 0) { if y < 10 { /* code */ } }
D. if (x > 0) { if (y < 10) { /* code */ } }

Solution

  1. Step 1: Check correct use of braces and parentheses

    In C, conditions must be inside parentheses and blocks inside braces. if (x > 0) { if (y < 10) { /* code */ } } uses both correctly.
  2. Step 2: Identify syntax errors in other options

    if (x > 0) if (y < 10) { /* code */ } misses braces for outer if block. if (x > 0) { if y < 10 { /* code */ } } misses parentheses around y < 10. if x > 0 { if (y < 10) { /* code */ } } misses parentheses around x > 0.
  3. Final Answer:

    if (x > 0) { if (y < 10) { /* code */ } } -> Option D
  4. Quick Check:

    Correct syntax = if (x > 0) { if (y < 10) { /* code */ } } [OK]
Hint: Use parentheses for conditions and braces for blocks [OK]
Common Mistakes:
  • Omitting parentheses around conditions
  • Forgetting braces for code blocks
  • Mixing syntax from other languages
3.

What is the output of this C code?

int x = 5, y = 8;
if (x > 0) {
    if (y < 10) {
        printf("A\n");
    } else {
        printf("B\n");
    }
} else {
    printf("C\n");
}
medium
A. A
B. B
C. C
D. No output

Solution

  1. Step 1: Evaluate outer if condition

    x = 5, which is greater than 0, so the outer if block runs.
  2. Step 2: Evaluate inner if condition

    y = 8, which is less than 10, so the inner if block runs and prints "A".
  3. Final Answer:

    A -> Option A
  4. Quick Check:

    x > 0 and y < 10 prints A [OK]
Hint: Check outer condition first, then inner [OK]
Common Mistakes:
  • Ignoring inner condition
  • Confusing else blocks
  • Assuming no output if outer condition true
4.

Find the error in this nested conditional code snippet:

if (a > 10)
    if (b < 5)
        printf("X\n");
    else
        printf("Y\n");
medium
A. Missing braces causing else to pair with wrong if
B. Incorrect use of semicolons after if statements
C. Using printf without including stdio.h
D. Variables a and b are not declared

Solution

  1. Step 1: Analyze the if-else pairing

    Without braces, the else pairs with the nearest if, which is the inner if. This may cause confusion or unexpected behavior.
  2. Step 2: Identify the fix

    Adding braces around the outer if block ensures the else pairs correctly and code is clear.
  3. Final Answer:

    Missing braces causing else to pair with wrong if -> Option A
  4. Quick Check:

    Braces fix else pairing [OK]
Hint: Always use braces to avoid else ambiguity [OK]
Common Mistakes:
  • Assuming else pairs with outer if
  • Ignoring braces importance
  • Thinking semicolons cause this error
5.

Given the code below, what will be printed if score = 75?

if (score >= 90) {
    printf("Grade A\n");
} else {
    if (score >= 70) {
        if (score >= 80) {
            printf("Grade B+\n");
        } else {
            printf("Grade B\n");
        }
    } else {
        printf("Grade C\n");
    }
}
hard
A. Grade B+
B. Grade C
C. Grade B
D. Grade A

Solution

  1. Step 1: Check first if condition

    score = 75, which is not >= 90, so skip first if block.
  2. Step 2: Check second if condition

    score >= 70 is true, so enter second if block.
  3. Step 3: Check nested if inside second block

    score >= 80 is false (75 < 80), so else block runs printing "Grade B".
  4. Final Answer:

    Grade B -> Option C
  5. Quick Check:

    75 >= 70 but < 80 prints Grade B [OK]
Hint: Check conditions top-down carefully [OK]
Common Mistakes:
  • Confusing >= 70 and >= 80 checks
  • Skipping nested else block
  • Assuming 75 is Grade B+
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