Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Jiris, Mock 1, Q17

 
Cathy Song
Ranch Hand
Posts: 270
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Output:
true
false
true
true
Can someone explain line 1, 3 please? Thanks.
 
Thomas Paul
mister krabs
Ranch Hand
Posts: 13974
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Cathy Song:
Can someone explain line 1, 3 please? Thanks.
The byte and short are promoted to an int, made positive and compared to zero.
I would have thought that line 2 would have confused you more than line 1 and 3.

Line 2 is false because of this rule of the abs method:
Note that if the argument is equal to the value of Long.MIN_VALUE, the most negative representable long value, the result is that same value, which is negative.
 
Cathy Song
Ranch Hand
Posts: 270
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Thomas,
I knew about the rule regarding Long/Integer. I thought the same applied to Byte/Short.
Thanks.
 
Jose Botella
Ranch Hand
Posts: 2120
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
An easy way to remember this is:
Integer.MIN_VALUE is 80 00 00 00
Without having looked at the code source I suspect that Math.abs calls ~ on the int or long argument ad then adds 1.
~80 00 00 00 = 7F FF FF FF
7F FF FF FF + 1 = 80 00 00 00
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic