In C, what will this program print? Note the comma operator in the function and the space in printf. #include<stdio.h> int addmult(int ii, int jj) { int kk, ll; kk = ii + jj; ll = ii * jj; return (kk, ll); } int main() { int i=3, j=4, k, l; k = addmult(i, j); l = addmult(i, j); printf("%d %d ", k, l); return 0; }

Difficulty: Easy

Correct Answer: 12 12

Explanation:


Introduction / Context:
This is the same comma-operator behavior as an earlier problem but with a different printf format (space-separated). The function returns the product because the comma operator yields the right-hand operand’s value.


Given Data / Assumptions:

  • i = 3, j = 4 → sum 7, product 12.
  • return (kk, ll) → returns 12.
  • printf prints two integers separated by a space.


Concept / Approach:
The comma operator evaluates left expression, discards it, then evaluates right expression and returns that value. So addmult returns 12. Both assignments to k and l receive 12.


Step-by-Step Solution:
kk = 3 + 4 = 7, ll = 3 * 4 = 12.return (kk, ll) → returns 12.k = 12, l = 12.printf prints: "12 12".


Verification / Alternative check:
Replace return (kk, ll) with return ll; compile and run; the output remains "12 12".


Why Other Options Are Wrong:
There is no compile error; the comma operator is legal. The program clearly outputs, so “No error, No output” is false. “None of above” contradicts the trace.


Common Pitfalls:
Assuming both values are printed (7 and 12); only the returned value is assigned each time.


Final Answer:
12 12

More Questions from Functions

Discussion & Comments

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