自增自减运算符
++i应该理解为执行完全部++运算后,然后进行其他运算
i++应该理解为执行完整个表达式后再进行自增运算
#include <stdio.h>
void main()
{ int i,j;
i=1;
j=++i+(++i);
printf("i%d\n",i);//3
printf("j%d\n",j);//6
i=1;
j=i+++(i++);
printf("i%d\n",i);//3
printf("j%d\n",j);//2
}
a++和++a在做左值的时候有不同,那么左值它首先必须是有特定地址的才能作为左值,否则赋值就没有具体对象。
再看看a++和++a。a++的意思是先复制一份临时数据出来参与周边环境的运算,再自加变量a,可见a++用来参与运算的是一份复制出来的临时数据,这个数据是临时存在而没有固定地址的,不是一个真正的变量。
++a的意思是先自加变量a,再将变量放到周边环境参与运算,那么++a用来参与运算的是有具体地址的变量,所以++a是可以作为左值使用的。
可以理解为:
a++返回一个临时变量
++a返回变量的引用