#include <stdio.h> char *c[] = { "GeksQuiz" , "MCQ" , "TEST" , "QUIZ" }; char **cp[] = {c+3, c+2, c+1, c}; char ***cpp = cp; int main() { printf ( "%s " , **++cpp); printf ( "%s " , *--*++cpp+3); printf ( "%s " , *cpp[-2]+3); printf ( "%s " , cpp[-1][-1]+1); return 0; } |
(A) TEST sQuiz Z CQ
(B) MCQ Quiz Z CQ
(C) TEST Quiz Z CQ
(D) GarbageValue sQuiz Z CQ
Answer: (A)
Explanation: Let us first consider **++cpp. Precedence of prefix increment and de-reference is same and associativity of both of them is right to left. So the expression is evaluated as **(++cpp). So cpp points to c+2. So we get “TEST” as output. Note the de-reference operator twice.
Similarly, you may try other expressions yourself with the help of precedence table.
Quiz of this Question
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.