On 10/26/22 14:10, 0xEAB wrote:

> I guess, this fancy behavior is inherited from C.

Yes. It is called integer promotions:

  https://dlang.org/spec/type.html#integer-promotions

(The next section is related as well.)

> I know this is advanced stuff, but the compiler *could* even prove that
> the calculation(s) won’t go beyond `ubyte.max`.

Apparently it does not go that far but there is Value Range Propagation:

  https://www.digitalmars.com/articles/b62.html

That article links to this forum post:


https://www.digitalmars.com/d/archives/digitalmars/D/Value_Preservation_and_Polysemy_80224.html#N80293

Ali

Reply via email to