Bird
Raised Fist0
Cprogramming~10 mins

Ternary operator in C - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Ternary operator
Evaluate condition
Yes/No↓
True expr
↓
Result assigned
The ternary operator checks a condition, then chooses one of two expressions to evaluate and assign based on that condition.
Execution Sample
C
int a = 5;
int b = 10;
int max = (a > b) ? a : b;
printf("%d", max);
This code uses the ternary operator to assign the larger of a and b to max, then prints max.
Execution Table
StepCondition (a > b)Condition ResultExpression ChosenValue Assigned to maxOutput
15 > 10Falseb10
2N/AN/AN/AN/A10
💡 Condition is false, so b is chosen; max is assigned 10; program prints 10 and ends.
Variable Tracker
VariableStartAfter Step 1Final
a555
b101010
maxuninitialized1010
Key Moments - 2 Insights
Why does max get the value of b and not a?
Because the condition (a > b) is false (5 is not greater than 10), so the ternary operator chooses the expression after the colon, which is b, as shown in execution_table step 1.
Is the condition evaluated before choosing the expression?
Yes, the condition is evaluated first. Only one of the two expressions is evaluated based on the condition result, as shown in the concept_flow and execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of max after step 1?
A5
B10
Cuninitialized
D15
💡 Hint
Check the 'Value Assigned to max' column in execution_table row for step 1.
At which step is the condition (a > b) evaluated?
AStep 1
BStep 2
CBefore Step 1
DNever
💡 Hint
Look at the 'Condition (a > b)' column in execution_table to see when it is evaluated.
If a was 15 and b was 10, what would max be assigned?
A10
B5
C15
D0
💡 Hint
Refer to variable_tracker and execution_table logic: if condition is true, max gets a.
Concept Snapshot
Syntax: condition ? expr_if_true : expr_if_false;
Evaluates condition first.
If true, evaluates and returns expr_if_true.
If false, evaluates and returns expr_if_false.
Used for concise if-else assignments.
Full Transcript
The ternary operator in C evaluates a condition and chooses one of two expressions to assign or return. In the example, a is 5 and b is 10. The condition (a > b) is false, so the expression after the colon (b) is chosen. max is assigned 10. The program then prints 10. This operator is a short way to write if-else statements for simple choices.

Practice

(1/5)
1. What does the ternary operator condition ? value_if_true : value_if_false do in C?
easy
A. It chooses one of two values based on the condition's truth.
B. It creates a loop that runs twice.
C. It declares a new variable.
D. It comments out code.

Solution

  1. Step 1: Understand the ternary operator structure

    The ternary operator uses a condition followed by a question mark, then two values separated by a colon.
  2. Step 2: Determine its purpose

    It returns the first value if the condition is true, otherwise the second value.
  3. Final Answer:

    It chooses one of two values based on the condition's truth. -> Option A
  4. Quick Check:

    condition ? true_value : false_value = chooses value [OK]
Hint: Remember: condition ? true : false picks one value [OK]
Common Mistakes:
  • Thinking it creates loops
  • Confusing it with variable declaration
  • Assuming it comments code
2. Which of the following is the correct syntax for the ternary operator in C?
easy
A. condition : value_if_true ? value_if_false;
B. condition ? value_if_true : value_if_false;
C. condition ? value_if_true, value_if_false;
D. condition ? (value_if_true : value_if_false);

Solution

  1. Step 1: Recall ternary operator syntax

    The correct syntax is: condition ? value_if_true : value_if_false;
  2. Step 2: Check each option

    condition ? value_if_true : value_if_false; matches the correct syntax exactly; others have misplaced symbols or punctuation.
  3. Final Answer:

    condition ? value_if_true : value_if_false; -> Option B
  4. Quick Check:

    Syntax is condition ? true : false; [OK]
Hint: Remember: question mark before colon in ternary [OK]
Common Mistakes:
  • Swapping question mark and colon
  • Using comma instead of colon
  • Adding extra parentheses incorrectly
3. What is the output of this C code?
int x = 5;
int y = (x > 3) ? 10 : 20;
printf("%d", y);
medium
A. 10
B. 20
C. 5
D. Syntax error

Solution

  1. Step 1: Evaluate the condition (x > 3)

    Since x is 5, 5 > 3 is true.
  2. Step 2: Apply ternary operator

    Because condition is true, y is assigned 10.
  3. Final Answer:

    10 -> Option A
  4. Quick Check:

    (5 > 3) ? 10 : 20 = 10 [OK]
Hint: Check if condition is true, then pick first value [OK]
Common Mistakes:
  • Choosing the false value by mistake
  • Confusing variable values
  • Thinking it causes syntax error
4. Identify the error in this C code using the ternary operator:
int a = 10;
int b = 20;
int max = a > b ? a, b;
medium
A. Missing colon ':' between values
B. Incorrect variable declaration
C. No error, code is correct
D. Using comma instead of colon in ternary

Solution

  1. Step 1: Check ternary operator syntax

    The ternary operator requires a colon ':' between the two possible values.
  2. Step 2: Identify the mistake

    The code uses a comma ',' instead of a colon ':', which is incorrect syntax.
  3. Final Answer:

    Using comma instead of colon in ternary -> Option D
  4. Quick Check:

    Ternary needs ':' not ',' [OK]
Hint: Ternary uses ':' not ',' between values [OK]
Common Mistakes:
  • Using comma instead of colon
  • Forgetting colon entirely
  • Assuming code is correct
5. Given this code snippet, what will be the value of result?
int a = 0;
int b = 5;
int result = (a != 0) ? (b / a) : (b * 2);
printf("%d", result);
hard
A. 0
B. Division by zero error
C. 10
D. 5

Solution

  1. Step 1: Evaluate the condition (a != 0)

    a is 0, so (0 != 0) is false.
  2. Step 2: Apply ternary operator

    Since condition is false, result is assigned (b * 2) = 5 * 2 = 10.
  3. Final Answer:

    10 -> Option C
  4. Quick Check:

    Condition false, so result = b*2 = 10 [OK]
Hint: Check condition first to avoid division by zero [OK]
Common Mistakes:
  • Assuming division happens causing error
  • Ignoring false condition path
  • Confusing variable values
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