Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Jan 2009 20:11:22 +0100
From:      Christoph Mallon <christoph.mallon@gmx.de>
To:        Jeff Roberson <jroberson@jroberson.net>
Cc:        svn-src-head@freebsd.org, Jeff Roberson <jeff@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org
Subject:   Re: svn commit: r187693 - head/sys/kern
Message-ID:  <497CB95A.109@gmx.de>
In-Reply-To: <20090125085419.O983@desktop>
References:  <200901251838.n0PIcgXk024858@svn.freebsd.org> <20090125085419.O983@desktop>

next in thread | previous in thread | raw e-mail | index | archive | help
Jeff Roberson schrieb:
> On Sun, 25 Jan 2009, Jeff Roberson wrote:
> 
>> Author: jeff
>> Date: Sun Jan 25 18:38:42 2009
>> New Revision: 187693
>> URL: http://svn.freebsd.org/changeset/base/187693
>>
>> Log:
>>   - bit has to be fd_mask to work properly on 64bit platforms.  Constants
>>     must also be cast even though the result ultimately is promoted
>>     to 64bit.
>>   - Correct a loop index upper bound in selscan().
> 
> Sorry about that, should've tested my earlier patch for more than a 
> couple of days.  I seldom remember c's integer promotion rules as they 
> relate to constants.  You'd think they'd make it easy on us and just 
> promote it to the largest type in the expression/lvalue.  I'm not sure 
> why they don't. Perhaps the more careful among you knows the answer.

The rule for operations is quite simple: An operation never cares for 
the type of its user. It only uses the type of the operand(s) to 
determine its result type. So for a = b + c the type of the result of + 
only depends on the types of b and c, but never on a.
Integer literals have a bit ugly rules what type they are: It depends on 
the base (!) and on the magnitude of the literal.
If in doubt and you need a specific type (and maybe making it more clear 
for a reader) then cast.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?497CB95A.109>