svn commit: r187693 - head/sys/kern
christoph.mallon at gmx.de
Sun Jan 25 11:11:30 PST 2009
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
>> - 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.
More information about the svn-src-head