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.
Kamesh said:
3 years ago
Thanks for explaining @Janani.
Vijaybhupathi said:
1 decade ago
If m=-2||1, then m=true=1; can any body justify it?
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.
Jyoti said:
1 decade ago
Since in OR operator if one of 2 variables r true so the o/p will be true Therefore at first i is non-zero implies true so whole o/p m will become true Hence no need to calculate further so j & k will not be changed
Sushil said:
1 decade ago
But if && and || operator are there, then according to precedence && will be evaluated first.
Rahul said:
1 decade ago
Thanks Jyoti. You are correct.
Aahas said:
1 decade ago
I just don't understand how to solve it.
Sindhu said:
1 decade ago
Why the value of j, k are not incremented?
Ripu said:
1 decade ago
All are giving explanation according to answer, please try it to make it elucidate according to standard of c.
Anu said:
1 decade ago
Eventhough according to the precedence rule the pre increment should be done first then its logical AND and at the end its logical OR this doesnt happen because of compiler optimisation.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers