implicit ubyte casting
empty at needmail.com
Thu Oct 1 08:15:45 PDT 2009
Jeremie Pelletier wrote
> 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
Thanks, but it is not that I do not know how it occurs more that
I should have asked whether people use this kind of logic.
For me it resulted in annoying bug like this:
for(int i = nloop;i<10;i++);//ubyte nloop is created quite a few lines
More information about the Digitalmars-d-learn