Is there any reason why arithmetic operation on shorts and bytes return int?
Rene Zwanenburg
renezwanenburg at gmail.com
Tue Dec 11 06:55:59 PST 2012
On Tuesday, 11 December 2012 at 13:24:59 UTC, d coder wrote:
>> No, it's a fix of a gotcha from C. The C code would just allow
>> the
>> assignment.
>
>
> Yes Andrei.
>
> But it does not look clean if you have to write:
>
> byte a, b, c;
> a = cast(byte) (b + c);
>
> Well I know the advantages (safety). But imagine having to
> write all that
> when working with bytes and shorts. Makes it really difficult
> to work with
> shorts and bytes in D. Would I be asking for too much if I ask
> DMD to
> provide a compiler flag that makes it return bytes and shorts
> for
> operations on them? So the deal would be, if you use this
> compiler flag,
> code behavior would be different from that of C/C++.
>
> What we get would be more practical short and byte behavior.
>
> Regards
> - Puneet
If the compiler can statically verify that some integer value
fits in a byte or short, you don't need the cast. So to rewrite
your example:
byte a, b, c;
a = (b + c) & 0xFF;
Also:
short a;
byte b, c;
a = b + c;
Still not exactly what you're looking for, but the mask looks
nicer than a cast IMO. It's also safer.
More information about the Digitalmars-d
mailing list