C Programming - Expressions - Discussion

Discussion Forum : Expressions - Find Output of Program (Q.No. 1)
1.
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;
}
-2, 3, 1, 1
2, 3, 1, 2
1, 2, 3, 1
3, 3, 1, 2
Answer: Option
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;
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".

Discussion:
28 comments Page 2 of 3.

Sandhya said:   9 years ago
How m becomes true? Can anyone explain it?

Don said:   9 years ago
M = -2 && 3 && 1;.

How a negative sign becomes true?

Raj said:   9 years ago
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;
}
What will be the output?

Siri said:   8 years ago
Can anyone explain -2 && 3 && 1?
(1)

Teju said:   8 years ago
@Siri.

AND(&&)operator.

Teju said:   8 years ago
Explain && operator.

Jav said:   8 years ago
@Lokesh Jain.

if i=-2, j=3, k=-1;
m=++i && ++j && k++;
Then output is m=1 i=-1 j=4 k=0.
Here k is post increment so in k++ it have value -1 but at next line, it gets value 0.

And if i=-2, j=3, k=-1;
m=++i && ++j && ++k;
Then output is m=0 i=-1 j=4 k=0.
Here k is pre-increment so, m is 0 because k is false.
The compiler is giving m=1 how is it?

Jav said:   8 years ago
int main()
{
int i=-2, j=3, k=-1,m;
m=++i && ++j && k++;
printf("%d, %d, %d, %d\n", i, j, k, m);

What should be its output? Please explain.

Manju said:   8 years ago
What is the value of m?

m=(K++ - K++), when K=7.

RAGHU said:   8 years ago
Output M=0.


Post your comments here:

Your comments will be displayed after verification.