lkml.org 
[lkml]   [2007]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: double exclamation (!!) suckage in the kernel
    On 5/26/07, Al Viro <viro@ftp.linux.org.uk> wrote:
    > On Sat, May 26, 2007 at 01:53:59AM +0530, Satyam Sharma wrote:
    > > Hello,
    > >
    > > Grepping through the sources I found 500+ occurrences of double
    > > exclamation marks before identifier names (such as !!x -- I took care
    > > to ignore occurrences of !! inside comment blocks, because there
    > > are plenty of that sort too).
    > >
    > > !! are to be found even in the definitions of common macros such as
    > > likely() and unlikely(), which hundreds of eyes must have seen over
    > > the last year or so ...
    > >
    > > Are all these occurrences merely the debris of
    > > s/something/!notsomething/g kind of patches or is there some
    > > dark, unknown C / gcc wizardry I have absolutely no clue of?
    >
    > That's a question for a quiz in introductory course on C:

    Ugh ... ok, I've embarrassed myself publicly already, so I'll
    also be brave enough to take a C quiz here :-)

    > what type should x have for !!x to be a valid expression?

    Any integer type (includes pointers)

    > what will be the type of result?

    int (I guess boolean for C99?)

    > what are the possible values of the result?

    {0, 1}

    > describe which values of x correspond to each possible value of !!x

    Russell's mail has already answered that ...

    > You have 10 minutes (and that's a fairly generous, actually).

    Hmmm, looking through the grep output, actually, it seems some of the
    occurrences of !! are indeed debris, but yes, most are actually a way to
    force the output to {0, 1} when dealing with individual bits in code.

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

    \
     
     \ /
      Last update: 2007-05-25 22:59    [W:3.220 / U:1.984 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site