byte + byte = int: why?

Mek101 oidgemek101 at gmail.com
Fri Jan 18 17:09:52 UTC 2019


I have the following line of code:

     temp[fowardI] = temp[fowardI] + temp[backwardI];

Where temp is a byte array (byte[]). When I try to compile it dmd 
gives me this error:

     source/hash.d(11,25): Error: cannot implicitly convert 
expression `cast(int)temp[fowardI] + cast(int)temp[backwardI]` of 
type `int` to `byte`
/usr/bin/dmd failed with exit code 1.

Meaning that the byte type doesn't have a + operator. I know by 
experience that the pitfall came from C# (which I also use), and 
the absence of the operator was justified because the CLI didn't 
support addition between values smaller than an int, and also 
byte wasn't enough "numberish" to be used as such, and I should 
have used int instead.

But why the D language doesn't implement the operator on byte?


More information about the Digitalmars-d-learn mailing list