Consider the following code:
#include <iostream>
struct Foo
{
Foo() : bar( 0 ) {}
int bar;
};
int main()
{
Foo foo;
++(foo.bar);
std::cout<< foo.bar << std::endl;
system("pause");
return 0;
};
Why does foo.bar
evaluate to 1?
Doesn't the parentheses in (foo.bar)
create an unnamed (r-value) expression which is then incremented?
Because the standard explicitly states that in 3.4.2 para 6:
A parenthesized expression is a primary expression whose type and value are identical to those of the enclosed expression. The presence of parentheses does not affect whether the expression is an lvalue.
emphasis mine.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With