Justin Spahr-Summers wrote:
On Thu, 17 Jun 2010 10:00:24 +0200, Don <[email protected]> wrote:
(D has introduced ANOTHER instance of this with the ridiculous >>> operator.
byte b = -1;
byte c = b >>> 1;
Guess what c is!
)


127, right? I know at least RISC processors tend to have instructions for both a logical and algebraic right shift. In that context, it makes sense for a systems programming language.

Surprise! c == -1.
Because 1 is an int, b gets promoted to int before the shift happens.
Then the result is 0x7FFF_FFFF which then gets converted to byte, leaving 0xFF == -1.

Reply via email to