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