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;
}
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 3 of 5.
Pratik said:
1 decade ago
Yeah @Anchal same confusion is being here.
Again according to precedence order first && should be evaluated.
Again according to precedence order first && should be evaluated.
Sushil said:
1 decade ago
But if && and || operator are there, then according to precedence && will be evaluated first.
Ripu said:
1 decade ago
All are giving explanation according to answer, please try it to make it elucidate according to standard of c.
Saravanan said:
1 decade ago
Isn't that the operation goes from right to left ?
As the increment operator is executed from right to left.
As the increment operator is executed from right to left.
Achal said:
7 years ago
Aint the precision of logical AND is higher than logical OR? Then how come OR will be executed first?
(1)
Sandeep said:
6 years ago
What's the point studying precedence table if Compiler optimization takes control of the result.
Shubham said:
6 years ago
&& operator has higher priority than ||. Then how is this possible?
Rahul said:
10 years ago
What is output of following?
1) ++a+a+++--a.
2) ++a+--a.
1) ++a+a+++--a.
2) ++a+--a.
Vijaybhupathi said:
1 decade ago
If m=-2||1, then m=true=1; can any body justify it?
Navaneethan said:
9 years ago
The answer is -2,3,1,1.
Because of ++i,++j.,++k.
Because of ++i,++j.,++k.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers