I am a beginner in programming and was trying out some combinations.
#include<stdio.h>
int main()
{
int a=5;
printf("%d",&a); // STATEMENT 1
printf("\n%d",a); //STATEMENT 2
printf("\n%d",&(a++)); //STATEMENT 3
printf("\n%d",a); //STATEMENT 4
return 0;
}
I get a error in STATEMENT 3 saying
[Error] lvalue required as unary '&' operand
I expected the output of STATEMENT 1 & 3 to be same as both address are the same.
Also I expected the output of STATEMENT 2 to be 5 & STATEMENT 4 to be 6.
I looked up and found a similar question : Lvalue required error
I understood the issue in that question.From the comments to the first answer to above mentioned question I see lvalue as something to which something can be stored.
But I still can't understand why &(a++) or &(++a) should give an error. Any help will be appreciated.
Thank You for reading this.
[Edit] Thank you for answering. If possible please include references where the exact sequence of execution or nature of such expressions are discussed. That way rookies like me won't trouble the community with such trivial questions.