这个涉及到运算符的优先级问题,在这个表达式中,优先级顺序为:()>* 和++,而*和++是同优先级的,同优先级时,看结合性,而*和++是自右向左的结合性的,所以,
(++p)的结果是右值,而后缀++的操作数需要是左值,但是没有左值啊,*(++p)++;编译的时候会提示“左值需要增量操作数”的错误提醒,所以这条表达式是有问题的。
下面是示例程序:
int main()
{
int a[4]={0,1,2,3};
int *p=a;
int x=0;
x=*(++p)++;
printf("(*(++p)++) = %d\n", x);
return 0;
}