-
先看一看i++和++i : ++i表达式的结果是直接进行加“1”,返回的是i这个变量本身,而i++是先把i的值
赋给一个临时变量tmp,再对i加“1”,而表达式的值返回的是临时变量的值。
综上:++i可以被作为一个左值进行赋值,而i++返回的是一个已经消失的临时变量,那么临时变量是无法被赋值的,
所以无法成为左值只能作为右值。 -
与指针:
int a[]={1,3,6,43,78};
int *p=a;
printf("%d\n",*p++);
printf("%d\n",*p); //结果是1 3;第一行先自增p,相当于*(p++)当然这种格式是错误的。
int b[]={1,3,6,43,78};
p=b;
printf("%d\n",(*p)++);
printf("%d\n",*p); //结果是1 2;
int c[]={1,3,6,43,78};
p=c;
printf("%d\n",*++p); //3
p=c;
printf("%d\n",++*p); //2