C Programming - Expressions - Discussion

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

Discussion:
41 comments Page 4 of 5.

Rahul khartode said:   4 years ago
How can we say -2 as true? Please anyone explain.

Sindhu said:   1 decade ago
Why the value of j, k are not incremented?

Aahas said:   1 decade ago
I just don't understand how to solve it.

Harshini said:   5 years ago
@Janani.

Thanks for your explanation.

Kamesh said:   3 years ago
Thanks for explaining @Janani.

Mahalakshmi said:   4 years ago
Thanks for explaining @Janani.

Rahul said:   1 decade ago
Thanks Jyoti. You are correct.

Divya joshi said:   1 decade ago
What is compiler optimization?

Sanjay said:   1 decade ago
How this possible?

Deepak Singh said:   7 years ago
It is -2, 3, 0, 1.


Post your comments here:

Your comments will be displayed after verification.