Q60.Marks: +2.0UGC NET Paper 2: Computer Science 7th Dec 2023 Shift 2
Consider the following code segment:
int arr[ ] = {0, 1, 2, 3, 4};
int i=1, *ptr;
ptr=arr + 2;
arrange the following printf statements in the increasing order of their output.
(A) printf("%d", ptr[i]);
(B) printf ("%d", ptr[i+1]);
(C) printf ("%d", ptr[-i]);
(D) printf ("%d", ptr[-i+1]);
Choose the correct answer from the options given below :
1.(C), (A), (B), (D)
2.(C), (D), (A), (B)✓ Correct
3.(D), (A), (B), (C)
4.(A), (B), (D), (C)
Solution
The correct answer is (C), (D), (A), (B)
EXPLANATION:
(A) printf("%d", ptr[i]);
This will print the value of the 'i' index from the 'ptr', which is the array starting from the index '2'. So ptr[i] is equivalent to arr[2+i], which is arr[3] = 3.
(B) printf ("%d", ptr[i+1]);
This will print the value of the 'i+1' index from the 'ptr'. ptr[i+1] is equivalent to arr[2+i+1], which is arr[4] = 4.
(C) printf ("%d", ptr[-i]);
This accesses the element at the position '-i' from the starting point of 'ptr'. ptr[-i] is equivalent to arr[2-i] which is arr[1] = 1.
(D) printf ("%d", ptr[-i+1]);
This accesses the element at the position '-i+1' from 'ptr'. ptr[-i+1] is equivalent to arr[2-i+1] which is arr[2] = 2.
So the increasing order of their output is (C) < (D) < (A) < (B).