On Sat, 11 Jun 2011 18:32:59 -0400, Jonathan M Davis <[email protected]> wrote:

On 2011-06-11 14:54, Renoir wrote:
Sorry for the question but i'm an absolutely noob
I have:

byte x = 10;
byte y = 3;
x = x + y;

why compilers complains?

Error: cannot implicitly convert expression (cast(int)x + cast(int)
y
) of type int to byte

Have i to make another cast to sum byte + byte?

All integral operations where the types are int or smaller result in an int (unless you're dealing with unsigned types, in which case, I believe that the result would be uint). So, in this case the result of x + y is int. So, if you
want the result to be byte, you have to do

x = cast(byte)(x + y);

If I'm not mistaken, the original code should be handled (and compile without errors) by range propagation. Is that not fully implemented?

-steve

Reply via email to