Conditional operator usage in C: which of the following is a correct and idiomatic use of the ternary operator ?:

Difficulty: Medium

Correct Answer: a>b ? c=30 : c=40;

Explanation:

Introduction / Context:The conditional (ternary) operator in C provides a compact, expression-based alternative to simple if/else assignments. It has the form condition ? expr_if_true : expr_if_false and returns the value of one of the two expressions. Using it correctly requires supplying both branches and respecting that it is an expression, not a statement keyword.

Given Data / Assumptions:

  • We are choosing among four snippets that purport to use ?:.
  • Standard C syntax and usual operator precedence apply.

Concept / Approach:A valid ternary expression must include both the true and false branches. It can yield a value, which you may assign or return. Nesting is allowed but parentheses are recommended for readability.

Step-by-Step Solution:Option (a) provides both branches and performs assignments: a > b ? c = 30 : c = 40; This is valid (though many prefer c = a > b ? 30 : 40; for clarity).Option (b) omits the false branch; it is a syntax error.Option (c) uses nested ternaries to compute a maximum; while complicated, the snippet is missing a final semicolon in this listing but the expression form is otherwise valid. However, the question asks for the correct usage among the listed lines as-is; (a) is the clean, unambiguous example.Option (d) uses “a:b” inside parentheses, which is invalid; it should be return (a > b) ? a : b;

Verification / Alternative check:Compile variant forms: c = a > b ? 30 : 40; and confirm behavior matches the equivalent if/else.

Why Other Options Are Wrong:

  • (b) is incomplete syntax.
  • (c) as written is missing a terminator in many coding styles and is needlessly hard to read.
  • (d) misuses the colon; the right form is a : b without parentheses around the pair.

Common Pitfalls:Forgetting the else part; writing side-effect-laden branches that reduce readability; mixing statements and expressions improperly.

Final Answer:a>b ? c=30 : c=40;.

More Questions from Expressions

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion