Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   lvalue required?? (http://www.go4expert.com/forums/lvalue-required-t29296/)

IndiraP 17Nov2012 20:52

lvalue required??
 
Code:

# define TWICE(i) 2*i
# define TWO(i) i+i
main ()
{
    int no, sum, product;
    no = 1;
    sum = -- TWICE(no);
    --sum;
    product = --TWo(no);
    printf (“%d%d\n”, sum, product);
}

y am i getting an error stating lvalue required at --TWICE(no); above??
wat does it mean???

xpi0t0s 18Nov2012 13:59

Re: lvalue required??
 
It means you aren't using #defines and the predecrement operator correctly.

--TWICE(no) expands to --2*no and you can't predecrement a constant.
However, in the case of TWICE, even brackets don't fix the problem because --(2*no) still won't work because 2*no is not an lvalue. An lvalue ("left value") is something you can put on the left of an assign, so in i=5, i is the lvalue and this is valid because you can assign a value to it. 5=i is invalid because you can't assign a value to 5. (2*no)=7 is invalid because you can't assign a value to (2*no).

--TWO(no) will "work" - in the sense that it won't throw an error, but you're still abusing the -- operator. This will expand to --i+i which gives undefined results.

IndiraP 18Nov2012 16:09

Re: lvalue required??
 
Thank u for giving me a clear view..:)


All times are GMT +5.5. The time now is 18:37.