1 votes 1 votes Output will be- int main(){ int a =0,b=1,c=3: *((a)?&b&:&a)=a ? b : c; printf("%d %d%d ", a,b,c); } KashishNarang asked Aug 23, 2018 KashishNarang 266 views answer comment Share Follow See all 4 Comments See all 4 4 Comments reply Shaik Masthan commented Aug 23, 2018 reply Follow Share 3 1 3 ? 0 votes 0 votes KashishNarang commented Aug 23, 2018 reply Follow Share Please explain how? 0 votes 0 votes MiNiPanda commented Aug 23, 2018 reply Follow Share *((a)?&b&:&a)=a ? b : c; The & is extra.. The right side of assignment operator is evaluated first. So, a ? b : c means 0?b:c => False?b:c so as per the ternary operation this will be evaluated to the value of c i.e. 3. Now evaluate the lhs: Let &a=100,&b=200,&c=300 *((a)?&b:&a) = *((0)?&b:&a) = *(&a)= *100 *100 i.e. a will be evaluated with rhs i.e. 3. a=3,b=1,c=3 So output will be 3 1 3. 2 votes 2 votes KashishNarang commented Aug 23, 2018 reply Follow Share Got it.Thanks a lot for explanation. 1 votes 1 votes Please log in or register to add a comment.