programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# Precedence

Bojan Knezovic
Ranch Hand
Posts: 90
Can someone shed some light here please, I'm desperate

y is 0!
I thought it would be y=-1 + 0 but it seems to be y=-1 + 1.
How come??

Michael Morris
Ranch Hand
Posts: 3451
It is evaluated left to right:
1. y = x++ (At this point y = -1 and x now equals 0)
2. y = y + ++x (Now y = 0 and x = 1)

Ranch Hand
Posts: 40
Just a guess, I think here's what happened:
x=-1
y=x++ + ++ x; // x= -1
x++ has the most precedence, so it becomes:
y= (-1) + ++x; // x = 0
++x is next:
y = (-1) + (1);
therefore the result is 0.
It is interesting to compare this with:
x = -1;
x += x++;
Which will give -2, in my mind the += operator works like:
int tmp = x;
x = tmp + x++;
Hope this helps and the above is correct...

Bojan Knezovic
Ranch Hand
Posts: 90
Originally posted by Michael Morris:
It is evaluated left to right:
1. y = x++ (At this point y = -1 and x now equals 0)
2. y = y + ++x (Now y = 0 and x = 1)

I thought x gets inceremented only AFTER the = operator (for #1, x++), isn't that what's pre and postfix notation all about... Oh well... :roll: