Isn’t the evaluated value different from the expression? i++ returns the value of i before increasing. i-=-1 would return the value after it has been increased. Wouldn’t it be more correct to make it equal to ++i
They’re especially also a source of bugs, because they encourage manually incrementing indices and manually accessing array positions, which is almost never actually sensible.
In C you can group expressions within ( and ) separated with ,. Expressions are evaluated in order and the last expression in the group is the returned value of the group.
Isn’t the evaluated value different from the expression?
i++
returns the value of i before increasing.i-=-1
would return the value after it has been increased. Wouldn’t it be more correct to make it equal to++i
And that’s why post- and pre-increment is non-existant in Python and Rust. It’s an easy source for bugs for a noncritical abbreviation🤷
They’re especially also a source of bugs, because they encourage manually incrementing indices and manually accessing array positions, which is almost never actually sensible.
In the languages I know,
i-=-1
orx=3
are not expressions, but rather statements, so they do not evaluate to a value.So, this would be a compiler error:
a = (x=3)
Well, not all languages allow for fun programming :)
Sounds like the opposite of fun to me, to have those as expressions…
Please explain in less detail to help me understand, internet friend.
In C you can group expressions within
(
and)
separated with,
. Expressions are evaluated in order and the last expression in the group is the returned value of the group.