On Mon, May 11, 2009 at 5:22 PM, Robert P. J. Day <rpjday@xxxxxxxxxxxxxx> wrote: > On Mon, 11 May 2009, Bob Beers wrote: > >> On Mon, May 11, 2009 at 5:00 PM, RT Mistler <rtmistler@xxxxxxxxxx> wrote: >> > Hi, >> > >> > I've been looking at some kernel modules trying to map an embedded >> > devices resources and while going through a driver, I encountered an >> > "if" test that employed "!!", example: >> > >> > if !!function_foo(args) { >> > ... >> > } >> > >> > What does the "!!" do? (I'm familiar with a single "!") >> >> IIANM, it does "!" and then does "!" again, forcing boolean value, >> true or false. > > it's not clear why that would make any difference since 0 is boolean > false and everything else is boolean true. so under what > circumstances would doing a double negation change execution > behaviour? or am i missing something? > Well, the OP's example is not a real example from the kernel source. A usage I can imagine is where one requires a *boolean* value, not just "0" or "not 0". This usage, "!!", provides that conversion, no? -Bob -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ