Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Feeling confused with -(--a) vs --(-a) in c

Confusion with ++ and -- operator

int a = 10;
printf("%d\n", -(--a) ); // valid

output: -9 

But, problem occurs when following is used:

printf("%d\n", --(-a));  // error, invalid

Why?

like image 758
Shahriar Avatar asked Dec 04 '25 13:12

Shahriar


1 Answers

The ++ and -- operator works on only lvalue, not value. An lvalue is something that can stand on the left side of an assignment.

printf("%d\n", -(--a) );

Here, -- operator works on variable a, so this is valid.

But,

printf("%d\n", --(-a));

Here, (-a) returns a value. -- is applied to a value, which is not valid. This is because -- modifies a variable, and int value can't be modified (For example you can't do 7 = 5 but you can do a = 5)

like image 95
Shahriar Avatar answered Dec 07 '25 16:12

Shahriar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!