What the heck am i doing wrong? I'm just trying to create a 8 bit unsigned variable.
H. S. Teoh
hsteoh at qfbox.info
Sun May 18 15:30:39 UTC 2025
On Sat, May 17, 2025 at 07:09:40AM -0600, Jonathan M Davis via Digitalmars-d-learn wrote:
[...]
> Given that Java and C# disallow narrowing conversions, I expect that
> they have similar restrictions, but I haven't done much with either of
> them any time recently, so I'm not sure what they do with smaller
> integer types and arithmetic.
[...]
> It's just that the fact that smaller integer types get converted to
> int for arithmetic makes it worse, though if they weren't, you'd be
> getting integer overflow with them pretty frequently, I expect.
[...]
This is why my proposed nopromote package uses the wrapper function .np
to overtly mark an expression as being computed in narrow width,
therefore there's the risk of wraparound issues.
```
import nopromote;
byte b = 120;
b = b.np + 5; // .np overtly marks this as narrow int arithmetic
b = b.np * 2; // you're on your own here when this overflows
// Though you should't be using narrow ints if you didn't know how to
// deal with it properly in the first place.
```
T
--
The most powerful one-line C program: #include "/dev/tty" -- IOCCC
More information about the Digitalmars-d-learn
mailing list