implicit ubyte casting
jeremiep at gmail.com
Thu Oct 1 07:16:08 PDT 2009
> I think is very bug-prone, isn't it obvious iub should be -5?
> ubyte ub = 5;
> int iub = -ub; // iub now is 251
> What is the reasoning to do it this way?
Minus toggles the most significant bit, be it on a signed or unsigned
type. When converting it to an int, the byte being signed or unsigned
does make a difference: when unsigned the number is copied as is, when
signed the most significant bit (bit 7) is shifted to the most
significant bit of the int (bit 31).
Its therefore pretty standard logic, no warning is given since the
entire ubyte range fits within an int
More information about the Digitalmars-d-learn