这段代码怎么分析啊,自己打的绕进去了,C语言

img


为什么a=n++结果是4,直接输出n++结果是5,还有++n是6,这些都是怎么看的

n++是先使用这个变量再自增1
++n先自增再使用
第37 38行,y赋值2,n赋值3
第39行,nextnum = (y + n++) * 6。 这里是n++(先使用n,nextnum = (2+3)*6,也就是30,使用之后n再自增1,那么这时n=4了)
第41行,a = n++,先使用n,那么a=4, n再自增1,那么这时n=5了
第43行,第一个n++,先使用n,打印5,后面那个++n,先自增再使用打印6
为什么第43行第一个n++没有自增呢,因为自增是在分号之后自增的(也就是这句语句彻底执行完才自增)

之前n++了所以n为4
a = n++; //n先赋值,再++,故而结果是4
这时n为5,执行
printf("%d %d", n++, ++n);//同样n++是先赋值再++,故而第一个输出为5,因为在printf语句中,输出是并行的,++n并不依赖前一个结果,先++再赋值,故而为6

不知道我有没有说明白

debug会用吗 会的话 这道题简单了 不会就自己尽量去查资料吧