Expressions - Programming

Q1:

What will be the output of the program?
#include<stdio.h>
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;
}

A -2, 3, 1, 1

B 2, 3, 1, 2

C 1, 2, 3, 1

D 3, 3, 1, 2

ANS:A - -2, 3, 1, 1

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;
becomes m = -2 && 3 && 1;
becomes m = TRUE && TRUE; 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 i,j,k are increemented by '1'(one). Hence the output is '-2, 3, 1, 1'.