Home / C Programming / Control Instructions :: Discussion

Discussion :: Control Instructions

  1. What will be the output of the program?

     #include 
     int main()
     {   
         int a=0, b=1, c=3;   
         *((a) ? &b : &a) = a ? b : c;     
         printf("%d, %d, %d\n", a, b, c);     
         return 0;
     } 
    

  2. A.

    0, 1, 3

    B.

    1, 2, 3

    C.

    3, 1, 3

    D.

    1, 3, 1

    View Answer

    Workspace

    Answer : Option C

    Explanation :

    Step 1: int a=0, b=1, c=3; here variable a, b, and c are declared as integer type and initialized to 0, 1, 3 respectively.

    Step 2: *((a) ? &b : &a) = a ? b : c; The right side of the expression(a?b:c) becomes (0?1:3). Hence it return the value '3'.

    The left side of the expression *((a) ? &b : &a) becomes *((0) ? &b : &a). Hence this contains the address of the variable a *(&a).

    Step 3: *((a) ? &b : &a) = a ? b : c; Finally this statement becomes *(&a)=3. Hence the variable a has the value '3'.

     

    Step 4: printf("%d, %d, %d\n", a, b, c); It prints "3, 1, 3".


Be The First To Comment