On 30-04-2012 08:37, jerro wrote:
Sorry, I managed to get myself confused here. What I meant to say was that I think >> should do an arithmetic shift if the operands are signed; unsigned shift otherwise.It does arithmetic shift if the left operand is signed, unsigned shift otherwise. This code: void main() { int a = 0xffffffff; uint b = a; writefln("%x", a >> 1); writefln("%x", b >> 1); } prints ffffffff 7fffffff
The documentation disagrees: http://dlang.org/expression.html#ShiftExpression
It claims that it always does arithmetic shift and >>> always does unsigned shift.
-- - Alex
