implicit ubyte casting

Jeremie Pelletier jeremiep at
Thu Oct 1 07:16:08 PDT 2009

Saaa wrote:
> 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 mailing list