是这样的,m++,++在后面就先引用(这里是引用输出),然后再自加,
++m,就相反了,要先自加,然后再引用。比如:int m=2;a=m++就是先把m=2赋值给a,然后再m自加。而如果是a=++m,就是先m+1,然后把3赋给a。
你上面那个printf("%d%d",m++,++n);就是先输出m(12)然后m=m+1=13,先n=n+1=35然后输出35,第二个printf("%d%d\n",n++,++m);先输出n,由于上一个已经加1得35,所以这里输出35,然后n=n+1,m先自加1然后再输出就是14了。
这是一个编译器相关的问题,不同的编译器会给出不同的答案
不过还是给你讲讲最普遍的答案吧
m++也叫后加加,他是先返回值后加加的
比如m=1;a=m++;是先把m=1返回给a,m的值再加一,m=2;
++m也叫前加加,他是先增加一后把值返回去的
比如m=1;a=++m 意思是m=m+1=2;a=m=2;
上面的过程是
1:打印m=12;n=34+1;
2:打印后m=13,n=35
3:打印n=35;m=13+1;
4:打印后m=14,n=36
自增和自减运算符需要从变量在内存中实际值的变化角度去理解。
1、m++,意思是先取当前m在内存中的值来用,但是用完后,m在内存中的值加1,也就是说你下次再用m的值就是m+1了。
2、++m,意思是在用m之前,先将m在内存中的值加1,然后再用。
你可能会迷惑:什么情况下是在调用变量在内存中的值呢?很简单,只要是变量出现的地方都是在调用变量在内存中的值(除变量的定义外)。
自减运算符同理。