Home / C Programming / Expressions :: Discussion

Discussion :: Expressions

  1. What will be the output of the program?

    #include
     int main() 
    {    
        int i=-3, j=2, k=0, m;   
        m = ++i || ++j && ++k;   
        printf("%d, %d, %d, %d\n", i, j, k, m);     
        return 0;
     }
    

  2. A.

    2, 2, 0, 1

    B.

    1, 2, 1, 0

    C.

    -2, 2, 0, 0

    D.

    -2, 2, 0, 1

    View Answer

    Workspace

    Answer : Option D

    Explanation :

    Step 1: int i=-3, j=2, k=0, m; here variable i, j, k, m are declared as an integer type and variable i, j, k are initialized to -3, 2, 0 respectively.

    Step 2: m = ++i || ++j && ++k; here (++j && ++k;) this code will not get executed because ++i has non-zero value.
    becomes m = -2 || ++j && ++k;
    becomes m = TRUE || ++j && ++k; Hence this statement becomes TRUE. So it returns '1'(one). Hence m=1.

    Step 3: printf("%d, %d, %d, %d\n", i, j, k, m); In the previous step the value of variable 'i' only increemented by '1'(one). The variable j,k are not increemented.

    Hence the output is "-2, 2, 0, 1".


Be The First To Comment