#include <stdio.h>
int main()
{
int a[3] = {1, 2, 3};
int *b = a;
int c = ++(++(*++b)); /* error: lvalue required as increment operand */
printf("%d", c);
return 0;
}
But the following is legal:
int c = *++b+1+1;
Why such a difference exists?