关于C语言中出现的问题~!!!请详细指点,指点...谢谢拉!!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:34:09
main()
{ int m=12,n=34;
printf("%d%d",m++,++n); ←里面的m,n结果???
printf("%d%d\n",n++,++m); ←里面的m,n结果???
}

得到的最后结果为什么n=35,m=14

为什么不是n=36,m=14呢?

请那位高手详细指点.指点~~~~

m++是指先执行相关语句再使m+1;
++m是指先使m+1再执行相关语句。
m=12,n=34
第一个语句
printf("%d%d",m++,++n);
输出为m=12,n=35
此时系统中m=13,n=35
第二个语句
printf("%d%d\n",n++,++m);
输出为m=14,n=35
此时系统中m=14,n=36
如果你再加一个语句
printf("%d%d\n",n,m);
结果就是m=14,n=36

printf("%d%d",m++,++n); m++先打印m=12然后再加1,++n先对n加1,等于35,之后再打印。这步结束后m=13,n=35
printf("%d%d\n",n++,++m);
同理,n++先打印n=35然后再加1
++m先对m加1,等于14,之后再打印

这是规则:
++i,--i (在使用i之前,先使i的值加(减)1)
i++,i-- (在使用i 之后,使i的值加(减)1)
自己查一下书就会明白了