#include <stdio.h> int main() { int n=0,m; for(m=1;m<=n+1;m++) printf("%d%d",++m,m++); return 0; } | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

#include <stdio.h> int main() { int n=0,m; for(m=1;m<=n+1;m++) printf("%d%d",++m,m++); return 0; }

Anyone trace the code and explain it's working .

8th May 2022, 5:56 PM
Abhishek Thakur
3 Answers
0
Abhishek Thakur Loop runs only once since initially n=0 and m=1 and m<=n+1=>1<=0+1 => 1<=1 is true so prints ++m, m++ so 22 outputs,(hoping evaluating from left to right), then next m++ cause m=4 but m<=n+1 => 4<=1 is false so loop stops.. But actually, It may print 2 3 or 2 2 or 3 2 or 1 3 or 3 1 because of sequence point issue.. You can see in warnings.. Hope it helps... edit: It outputting 31 but it is undefined. on different compiler, it may give different result.. about pre/post increment: refer this. https://www.sololearn.com/Discuss/1690694/?ref=app about sequence point issue: https://en.m.wikipedia.org/wiki/Sequence_point & https://www.sololearn.com/Discuss/2038766/?ref=app hope these helps...
8th May 2022, 6:08 PM
Jayakrishna 🇮🇳
0
Still i didn't get how that increment will give 3 ?
9th May 2022, 6:24 AM
Abhishek Thakur
0
It's there happening from left to right so m=1 then m++ print 1 , after this m=2 ++m cause m=3 then it print m value 3. So outputs 3 1
9th May 2022, 9:18 AM
Jayakrishna 🇮🇳