Why (v1<<8 + v2) different from (v1<<8 | v2)?

Paul Backus snarwin at gmail.com
Wed May 25 12:51:07 UTC 2022


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