Does D have too many features?

Alex Rønne Petersen xtzgzorex at gmail.com
Mon Apr 30 08:21:18 PDT 2012


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


More information about the Digitalmars-d mailing list