Win a copy of OCP Java SE 8 Programmer II Exam Study Guide this week in the OCP forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

Operator precedence - pre and post incrementation/decrementation  RSS feed

 
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

I'm preparing to take OCA exam and found one thing, that is confusing me.

++ and -- operators have the highest priority, so as I understand it, should be evaluated first.
However, please take a look at these two code snippets.

and

As I understand it, in both cases pre decrementation should be evaluated first, so 'a' should be treated as 3 in the whole example, so I should get 'false' in both cases.
Clearly my understanding is incorrect

Could anyone please explain, how does it work with pre and post incrementation and decrementation precedence?

Thanks in advance!
 
Sheriff
Posts: 21289
87
Chrome Eclipse IDE Java Windows
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Welcome to the Ranch!

While it's true that ++ and -- operators have the highest priority, evaluation still occurs from left to right. It's only that ++ and -- will occur before any other operator.

Let's take your two examples:
--a <= 3 % a is the same as ((--a) <= (3 % a)). First --a is evaluated; a is decreased by 1, and the result is 3. Then 3 % a is evaluated. Since a is now 3, the result is 0. The result is then 3 <= 0 which is false.

3 % a >= --a is the same as ((3 % a) >= (--a)). First 3 % a is evaluated. Since a is still 4, the result is 3. Then --a is evaluated. The result is now 3 >= 3 which is true.
 
Bartender
Posts: 3307
86
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If you change the last println to

You will be able to see what is happening.
 
Mega Cinol
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Now it's clear - thanks!
 
author
Marshal
Posts: 23438
138
C++ Chrome Eclipse IDE Firefox Browser Java jQuery Linux VI Editor Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Mega Cinol wrote:
++ and -- operators have the highest priority, so as I understand it, should be evaluated first.



Only because I am being pedantic ... First, it is not highest "priority" -- it is "precedence". Second, only the post increment and post decrement are in the highest precedence group. The pre increment and pre decrement, has the next highest precedence. And finally, as already mentioned, precedence and evaluation order are not the same thing.

Henry
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!