Signed word lengths and indexes
Don
nospam at nospam.com
Thu Jun 17 03:55:39 PDT 2010
Justin Spahr-Summers wrote:
> On Thu, 17 Jun 2010 10:00:24 +0200, Don <nospam at nospam.com> 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.
More information about the Digitalmars-d
mailing list