Question

    What will be the output of the following C code?

    #include < stdio.h > void main ( ) {     int x = 10, y = 20, *p1 = &x, *p2 = &y;     *p2 = *p1 + *p2;     printf ("%d %d\n", x, y); }
    A 10 20 Correct Answer Incorrect Answer
    B 10 30 Correct Answer Incorrect Answer
    C 30 10 Correct Answer Incorrect Answer
    D Compiler error Correct Answer Incorrect Answer
    E Undefined behavior Correct Answer Incorrect Answer

    Solution

    The code demonstrates pointer manipulation in C. Here’s a breakdown: • int x = 10, y = 20; declares two integers, x and y. • *p1 = &x, *p2 = &y; initializes p1 to point to x and p2 to point to y. • *p2 = *p1 + *p2; fetches the values of x and y through p1 and p2 respectively, adds them, and assigns the result back to y via *p2. After this operation, y becomes 30, while x remains 10. Output: 10 30. Why Other Options Are Incorrect: 1. 10 20: This would occur if no pointer manipulation happened, but the code modifies y. 2. 30 10: Only y is updated, not x. 3. Compiler error: The code is syntactically correct and compiles successfully. 4. Undefined behavior: The pointers are used properly with valid memory addresses, avoiding undefined behavior.

    Practice Next