Expressions

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 1, 2, 0, 1

B -3, 2, 0, 1

C -2, 3, 0, 1

D 2, 3, 1, 1

ANS:A - 1, 2, 0, 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) || ++k;
becomes m = TRUE || ++k;.
(++k) is not executed because (-2 && 3) alone return 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 are increemented by '1'(one). Hence the output is '-2, 3, 0, 1'.



img not found
img

For help Students Orientation
Mcqs Questions

One stop destination for examination, preparation, recruitment, and more. Specially designed online test to solve all your preparation worries. Go wherever you want to and practice whenever you want, using the online test platform.