[ 本帖最后由 virfyf 于 2012-8-27 21:55 编辑 ]\n\n
*(s1++);与*s1++;是一样的
因为*取值运算符与++自增1运算符优先级相同,并且 结合方向是从右到左,
所以,即使是*s1++也是先s1本身++,再*取值.
验证程序
[mw_shl_code=c,true]#include <stdio.h>
int main()
{
int *a,*b;
a=(int*)malloc(2*sizeof(int));
b=a;
a[0]=1;
a[1]=2;
*a++;
printf("*a++ : %d %d\n",a,*a);
a=b;
a[0]=1;
a[1]=2;
*(a++);
printf("*(a++) : %d %d\n",a,*a);
a=b;
a[0]=1;
a[1]=2;
(*a)++;
printf("(*a)++ : %d %d\n",a,*a);
free(a);
getch();
return 0;
}[/mw_shl_code]
另外附上C语言运算符优先级表
|