In C, logical OR produces an integer result: what does this program print? #include<stdio.h> int main() { int a = 100, b = 200, c; c = (a == 100 || b > 200); printf("c=%d ", c); return 0; }

Difficulty: Easy

Correct Answer: c=1

Explanation:

Introduction / Context:In C, relational and logical operators yield an int result: 1 for true and 0 for false. This question checks that knowledge using a simple disjunction (logical OR).

Given Data / Assumptions:

  • a == 100 evaluates to true (1).
  • b > 200 evaluates to false (0), because b is exactly 200.
  • c stores the result of the logical OR of these two boolean values.

Concept / Approach:The logical OR operator || returns 1 if either operand is nonzero. Since the first operand is true, the overall result is true and short-circuiting applies; the second comparison need not change the outcome.

Step-by-Step Solution:Compute a == 100 → 1.Compute b > 200 → 0.Evaluate 1 || 0 → 1; assign to c.printf prints "c=1".

Verification / Alternative check:Change b to 250 to see that the expression still yields 1. Change a to 99 and b to 200 to see it yields 0.

Why Other Options Are Wrong:(a), (b), and (d) misinterpret logical results as variable values. (e) would only occur if both comparisons were false.

Common Pitfalls:Expecting printf to print the value of true as true instead of 1; forgetting that C uses integers for boolean outcomes.

Final Answer:c=1

Discussion & Comments

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