C Programming - Expressions - Discussion
Discussion Forum : Expressions - Find Output of Program (Q.No. 7)
7.
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;
becomes m = (-2 && 3) || ++k;
becomes m = TRUE || ++k;.
(++k) is not executed because (-2 && 3) alone return 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 are increemented by '1'(one).
Hence the output is "-2, 3, 0, 1".
Discussion:
21 comments Page 1 of 3.
Akach said:
8 years ago
Answer can be -2, 3, 1, 1 k value will be incremented to 1 since it is pre-incremented. How the value of k remains 0 here?
(2)
Omi said:
1 decade ago
++Pre increment is having highest priority than (&& and ||).
Then why k=0?
Then why k=0?
Shaikh Sakib said:
5 years ago
When it checks a && b and Find True. So It will again Check The Other condition. if It false than It will not Check conditions So Why There is k=0?
Jebby said:
7 years ago
main()
{
int i=1,j=1,k=0,l=2,m;
m=i++&&j++&&k++||l++;
printf("%d%d%d%d%d,,i,j,k,l,m);
}
For this, I'm getting the output of 22131.
In this case, l should not get incremented..It should be 2.I don't know why we are getting 3.
Please, anyone explain.
{
int i=1,j=1,k=0,l=2,m;
m=i++&&j++&&k++||l++;
printf("%d%d%d%d%d,,i,j,k,l,m);
}
For this, I'm getting the output of 22131.
In this case, l should not get incremented..It should be 2.I don't know why we are getting 3.
Please, anyone explain.
Ajay jain said:
8 years ago
Suppose in the place of ++k. if there will be k++ then the result of k++ is false right?
Please let me know and give an explanation.
Please let me know and give an explanation.
Rose said:
8 years ago
-2&&3 how in and operation the multiplication of false value * true value becomes as false value only know?
Explain to me that how you are assuming -2 as a true value?
Explain to me that how you are assuming -2 as a true value?
Premdev said:
9 years ago
How that answer came k value is 0?
It's that ++k means pre increment operator, So k =k+l..0+1=1 k=1.
It's that ++k means pre increment operator, So k =k+l..0+1=1 k=1.
Aman said:
9 years ago
How k = 0? Here, k should be got incremented to 1?
VENKAT said:
10 years ago
Why we are not incrementing the value of m? Please explain?
Haritha said:
10 years ago
Hello and operation both true values then true but we are said one is 1 and another is 0.
How to say value is true please explain?
How to say value is true please explain?
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers