Why (v1<<8 + v2) different from (v1<<8 | v2)?
step8
step7 at 163.com
Wed May 25 12:56:58 UTC 2022
Thanks:)
**writeln( (v1<<8) + v2 );** is ok
On Wednesday, 25 May 2022 at 12:51:07 UTC, Paul Backus wrote:
> On Wednesday, 25 May 2022 at 12:42:04 UTC, step8 wrote:
>> I run following test code:
>> int v1 = 22;
>> int v2 = 23;
>> writeln( v1<<8 + v2 );
>> writeln( v1<<8 | v2 );
>>
>> result is 0 and 5655
>> Why ( v1<<8 + v2 ) = 0 ?
>
> `+` has a higher precedence than `<<`, so the first line is
> actually `v1 << (8 + v2)`.
(
More information about the Digitalmars-d-learn
mailing list