Discussion :: C Preprocessor - Find Output of Program (Q.No.1)
|Srinivas said: (Apr 12, 2011)|
|Sir in the above program hw the value of 'i' became 12..?|
|Biswajit said: (Jul 22, 2011)|
|I become 12 and k become 12 but why not j become 7 ?|
|Kotesh said: (Aug 19, 2011)|
|The post increment (++) operator increments the j to 7 only when.
If the corresponding j is printed in the next; so the j value becomes 6.
|Arjun said: (Aug 23, 2011)|
|I still didn't get why 'j' should not be 7 when we finally print it. I agree it is 6 when we assign k, but shouldnt we see 7 when we print it in the next line?|
|Spl said: (Aug 30, 2011)|
|In the ternary operator ?: the second part never gets executed hence the only the j++ 1st j++ (the one present in condition) is executed and the other one (that is in else part) never gets executed .
Hence j is incremented only once.
|Dileep Kumar Kotha said: (Oct 23, 2011)|
|The #define has a semi-colon in the end, and hence two semi-colons in the same statement, when the macro gets replaced. Results in garbage value for K. Hence D is the right answer|
|Annanya said: (Jan 27, 2012)|
|Why the value of I will get incremented by two. As only the increment ++i is given.
Anybody please expalin?
|Jay said: (Sep 20, 2012)|
|MAN(++i, j++) //this line will replace by MAN(x, y) ((x)>(y)) ? (x):(y);
So it becomes:
k = ((++i)>(j++))?(++i):(j++);
And that's why I will increment 2 time.
|Ssh said: (Aug 21, 2015)|
|In MAN(++i, j++);
++i and j++ are expressions so they need to be executed first which results into MAN (11, 5).
How can an expression be passed to a function?
|Jyothi said: (Jan 13, 2016)|
|When i incremented in condition j should also increment but why it is not incremented -((++i)>(j++)).|
|Sreenivasulu Reddy said: (Jun 29, 2016)|
|The value of I value which is incremented is assigned to k, then how the value if I will be 12 instead of 11 sir.
Could you please reply me.
|Jerin said: (Aug 9, 2016)|
|To my best knowledge, the macro passes value after computation of increment, and not the expression!; but the solution considers passing of the whole expression. I'm confused!|
|Praneetha said: (Dec 18, 2016)|
According to above syntax:
When 11>5 is true then 12 is displayed.
If the condition is false then 6 is displayed.
I hope you understand.
|Sundri said: (Sep 8, 2017)|
O/P =( i=12,j=6)
And k=12 no?
Answer 12 6 6.
|Narasio said: (Sep 11, 2017)|
|If the condition is true the x will print otherwise y,
But in this x will inc by one.
Tell me how it will work?
|Nadhira Kc said: (Dec 24, 2017)|
|k = ((++i)>(j++)) ? (++i):(j++);
When the condition ((++i)>(j++)) is executed the value of i becomes 11 and 6 respectively. Since the condition is true, the first part of the conditional expression is alone executed (++i) and hence i becomes 12 and the value of j remains 6.
Thus the output is 12, 6, 12.
|Julio said: (Jun 27, 2019)|
|Vithu said: (Jan 30, 2021)|
|How does the value of k become 12? Explain please.|
Post your comments here:
Email : (optional)
» Your comments will be displayed only after manual approval.