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 2 of 5.

Dharani said:   8 years ago
In this question for OR operator if anyone condition is true output is true so according to this we don't want to evaluate other operators so time for doing this operation is saved and speed if this process increases. This is compiler optimisation.

Srikanth said:   7 years ago
I think operator precedence of logical AND (&&) is greater than logical OR (||).


First, we have to do logical AND operation and then logical OR operation.

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

Naresh said:   6 years ago
Our misconceptions are, negative(-) numbers including zero are False. Truth is,
Non-Zero numbers are 'True' in C.
eg: -3,-2,-1...1,2,3 ----> True
0 -----> False (only).

In other languages, the rule is negative(-) numbers including zero(0) is False, otherwise True.

Shubham said:   6 years ago
&& operator has higher priority than ||. Then how is this possible?

Sandeep said:   6 years ago
What's the point studying precedence table if Compiler optimization takes control of the result.

Mohit said:   5 years ago
Thanks @Jyoti.

Harshini said:   5 years ago
@Janani.

Thanks for your explanation.

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

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


Post your comments here:

Your comments will be displayed after verification.