Difficulty: Medium
Correct Answer: y = (int)(x + 0.5)
Explanation:
Introduction:
Rounding a floating value to the nearest integer using simple expressions is a common C task. The question focuses on the classic technique suitable for non-negative values of x.
Given Data / Assumptions:
Concept / Approach:
In C, a cast to int truncates toward zero. To emulate rounding to nearest integer for x >= 0, add 0.5 and then truncate. For general cases (including negatives, ties, or banker's rounding), use functions like round, floor, or ceil from math.h, but the simple pattern works for positive x.
Step-by-Step Solution:
1) Start with x (assume x >= 0).2) Compute x + 0.5.3) Cast to int: (int)(x + 0.5), which truncates to the integer part, effectively rounding.4) Assign to y.
Verification / Alternative check:
Example: x = 2.6 → 2.6 + 0.5 = 3.1 → (int)3.1 = 3. For general, prefer y = (int)lround(x) with #include
Why Other Options Are Wrong:
y = int(x + 0.5): 'int(...)' is not C cast syntax; C requires (int)(...).y = (int)x + 0.5: adds 0.5 after truncation; result is not an int.y = (int)((int)x + 0.5): truncates first; 2.6 → (int)2.6 = 2 → 2.5 → (int)2.5 = 2, which is wrong for 2.6.
Common Pitfalls:
For negative x, (int)(x + 0.5) does not round correctly. Use round, lround, or custom logic to handle negatives and tie-breaking rules.
Final Answer:
y = (int)(x + 0.5)
Discussion & Comments