On Thu, 26 Jun 2014 11:35:57 -0700
Linus Torvalds <torva...@linux-foundation.org> wrote:

> On Jun 26, 2014 11:28 AM, "Fabian Frederick" <f...@skynet.be> wrote:
> >
> >    Sorry but I don't see a problem with 2^31 value.
> 
> It's not really 2^31.
> 
> It's *negative* 2^31.
> 
> 1 is "int", so it's a signed number. With the shift it ends up being a
> signed number with the high bit set. That's just a bad bad idea.
> 
> Now, it just so happens that if you always compare it with unsigned
> numbers, C promotion rules will end up promoting it to unsigned and it
> happens to *work*, but that is more luck than design.
> 
> So I'd suggest using 0x80000000 (which is unsigned) or use (1ul<<31) or
> similar explicit C typing.

Ok, I understand now. Thanks a lot for taking the time to explain Linus.
It really means a lot to me.

Fabian
> 
>      Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to