On Mon, 07 Mar 2011 10:33:28 +0000, Eugene wrote: > Hi! > > What I want to do is pretty simple. I need to subtract a ubyte from a > ubyte and store the result in a ubyte. The problem is that DMD > implicitly wants to convert the ubytes into an integer, so it fails when > attempting to store the result into a ubyte. (Int cannot be converted > to ubyte?) > The error message I get: > > src\test.d(26): Error: cannot implicitly convert expression (cast(int)u2 > - cast(int)u1) of type int to ubyte
DMD is simply trying to protect you from what is otherwise a common bug. As a general rule, the result of an integer subtraction should be stored in a signed integer, since the result may be negative. If you are 100% sure that u2 >= u1, or if integer wraparound is what you're after, just use a cast: auto result = cast(ubyte)(u2 - u1); -Lars
