Post-increment in a return and pre-decrement in printf: what is printed? #include<stdio.h> int main() { int fun(int); int i = fun(10); printf("%d ", --i); return 0; } int fun(int i) { return (i++); }

C++ Programming Functions Difficulty: Easy
Choose an option
  • A
    9
  • B
    10
  • C
    11
  • D
    8
  • E
    Undefined behavior

Answer

Correct Answer: 9

Explanation

Introduction / Context:This question checks your understanding of post-increment in a return expression and a subsequent pre-decrement before printing. The behavior is completely defined in C.

Given Data / Assumptions:

  • fun(10) returns 10 because post-increment returns the operand’s old value.
  • Variable i receives 10.
  • printf("%d", --i); pre-decrements then prints.

Concept / Approach:The operator i++ yields the original value and then increments the local copy. Since function parameters are by value, the caller receives 10. The pre-decrement operator --i decrements first, then yields the new value.

Step-by-Step Solution:Call fun(10): returns 10 (post-increment proceeds on a temporary inside fun).Assign i = 10.Compute --i: now i = 9.Print 9.

Verification / Alternative check:If you changed the body to return (++i);, then i in main would be 11, and --i would print 10.

Why Other Options Are Wrong:“10/11/8” do not match the exact operator sequence. Behavior is not undefined here.

Common Pitfalls:Confusing pre- and post-increment semantics; assuming pass-by-reference incorrectly modifies the caller’s variable in the callee.

Final Answer:9

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