In C, precedence of unary * and multiplication: evaluate this expression. #include int main() { int i = 3, j, k; j = &i; printf("%d ", i**ji + *j); return 0; }

C Programming Pointers Difficulty: Easy
Choose an option
  • A
    30
  • B
    27
  • C
    9
  • D
    3
  • E
    36

Answer

Correct Answer: 30

Explanation

Introduction / Context:This expression combines dereferencing and arithmetic. In C, whitespace is irrelevant; ij is parsed as i * *j (multiplication by the dereferenced value). Understanding operator precedence avoids misreading the expression.

Given Data / Assumptions:

  • i = 3
  • j = &i → *j = 3
  • Expression: i * *j * i + j

Concept / Approach:Multiplication is left-associative, and unary (dereference) applies to j to yield 3. So evaluate products first, then addition.

Step-by-Step Solution:Compute *j = 3Multiply i * *j → 3 * 3 = 9Multiply by i again → 9 * 3 = 27Add j → 27 + 3 = 30Print 30

Verification / Alternative check:Introduce temporaries: a = j; printf("%d", iai + a); gives the same result.

Why Other Options Are Wrong:(b) stops before the final addition. (c) and (d) ignore parts of the expression. (e) does not arise from the given arithmetic.

Common Pitfalls:Misreading as an exponent operator (C has none), or as double-dereference; here the two stars are separate operators.

Final Answer:30

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