For example:
int x[100];
void *p;
x[0] = 0x12345678;
x[1] = 0xfacecafe;
x[3] = 0xdeadbeef;
p = x;
((int *) p) ++ ;
printf("The value = 0x%08x", *(int*)p);
Compiling the above generates an lvalue required error on the line with the ++ operator.
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The cast creates a temporary pointer of type
int *. You can’t increment a temporary as it doesn’t denote a place to store the result.In C and C++ standardese,
(int *)pis an rvalue, which roughly means an expression that can only occur on the right-hand side of an assignment.pon the other hand is an lvalue, which means it can validly appear on the left-hand side of an assignment. Only lvalues can be incremented.