Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
March 30, 2015 What ? | ||||
---|---|---|---|---|
| ||||
Hi again again, ulong u = 1 << 63; Raise : Error: shift by 63 is outside the range 0..31 This is a bug isn't it, the ulong are supposed to be on 64 bits ? I guess it's time I go to bed. Have a nice night ! |
March 30, 2015 Re: What ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to matovitch | On Monday, 30 March 2015 at 22:34:00 UTC, matovitch wrote:
> Hi again again,
>
> ulong u = 1 << 63;
>
> Raise :
>
> Error: shift by 63 is outside the range 0..31
>
> This is a bug isn't it, the ulong are supposed to be on 64 bits ? I guess it's time I go to bed.
>
> Have a nice night !
ulong, yes, but 1 is of type int.
Correct code:
ulong u = 1L << 63;
|
March 30, 2015 Re: What ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to matovitch | On Monday, 30 March 2015 at 22:34:00 UTC, matovitch wrote:
> Hi again again,
>
> ulong u = 1 << 63;
>
> Raise :
>
> Error: shift by 63 is outside the range 0..31
>
> This is a bug isn't it, the ulong are supposed to be on 64 bits ? I guess it's time I go to bed.
>
> Have a nice night !
The problem is that `1` isn't a ulong. The reason for this is probably C compatibility. Do this instead:
ulong u = 1L << 63;
|
March 30, 2015 Re: What ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vladimir Panteleev | On Monday, 30 March 2015 at 22:34:55 UTC, Vladimir Panteleev wrote:
> On Monday, 30 March 2015 at 22:34:00 UTC, matovitch wrote:
>> Hi again again,
>>
>> ulong u = 1 << 63;
>>
>> Raise :
>>
>> Error: shift by 63 is outside the range 0..31
>>
>> This is a bug isn't it, the ulong are supposed to be on 64 bits ? I guess it's time I go to bed.
>>
>> Have a nice night !
>
> ulong, yes, but 1 is of type int.
>
> Correct code:
>
> ulong u = 1L << 63;
Arf ! Safety. Danke !
|
March 30, 2015 Re: What ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Brian Schott | Brian Schott:
> Do this instead:
>
> ulong u = 1L << 63;
I suggest a more explicit:
ulong u = 1UL << 63;
Alternative:
ulong u = 2UL ^^ 63;
Bye,
bearophile
|
Copyright © 1999-2021 by the D Language Foundation