Home / C Programming / Control Instructions :: Discussion

Discussion :: Control Instructions

  1. What will be the output of the program?

     #include 
     int main()
     {  
         int x, y, z;  
         x=y=z=1;   
         z = ++x || ++y && ++z;    
         printf("x=%d, y=%d, z=%d\n", x, y, z);    
         return 0;
     } 
    

  2. A.

    x=2, y=1, z=1

    B.

    x=2, y=2, z=1

    C.

    x=2, y=2, z=2

    D.

    x=1, y=2, z=1

    View Answer

    Workspace

    Answer : Option A

    Explanation :

    Step 1: x=y=z=1; here the variables x ,y, z are initialized to value '1'.

    Step 2: z = ++x || ++y && ++z; becomes z = ( (++x) || (++y && ++z) ). Here ++x becomes 2. So there is no need to check the other side because ||(Logical OR) condition is satisfied.(z = (2 || ++y && ++z)). There is no need to process ++y && ++z. Hence it returns '1'. So the value of variable z is '1'

    Step 3: printf("x=%d, y=%d, z=%d\n", x, y, z); It prints "x=2, y=1, z=1". here x is increemented in previous step. y and z are not increemented.


Be The First To Comment