What is the meaning of the following line in C. What is the order of execute it?
Can any one explain how this evaluated?
For the original code:
x++ = y++
This line will never be evaluated because it is not legal C and will not be compiled. The result of
x++ is not an lvalue and is not permitted on the left side of an assignment.
For the updated code:
float x,y; *x++ = *y++
This is not legal because
* cannot be applied to a
I will add this code:
float *x, *y; *x++ = *y++;
This code says:
float *xt, equal
float *yt, equal
*xt = *yt.
The actual operations may be performed in various orders, provide
xt takes its value before
x is updated,
yt takes its value before
y is updated, and
yt are defined before they are used.
If the two variables are int (or another simple type), the original statement (
x++=y++) is illegal. However, in the case of pointer arithmetic, this is legal. One way to copy a string where both
char *, is
while ( *x++ = *y++ );
in this case, the pointer is incremented after the corresponding character is copied and the loop iterates until it encounters the end of string character (a
NULL) in the string pointed to by