Messages in this thread | | | From | Bodo Eggert <> | Subject | Re: double exclamation (!!) suckage in the kernel | Date | Sat, 26 May 2007 18:38:07 +0200 |
| |
Jan Engelhardt <jengelh@linux01.gwdg.de> wrote: > On May 25 2007 14:14, David Miller wrote:
>>"!!" is used in contexts where pointers might be being >>tested as well as plain integers, the "!!" turns a pointer >>into the equivalent integer boolean for testing. >> >>NULL pointers become 0 >>non-NULL pointers become 1 > > Though, > if(!!ptr) > is effectively the same as > if(ptr)
Not exactly, if(foo) is the same as if( (int) foo), which is not guaranteed to result in non-null values for non-null pointers. ISO 9899/1999 says: "Any pointer may be converted to an integer type. [...] The result need not be in the range of values of any integer type."
"if(!!foo)" is the same as "if(0 == (0 == foo))", which is (I asume) the same as "if(0 == ((type_of_foo)NULL == foo))", or if((type_of_foo)NULL != foo). -- Funny quotes: 11. Atheism is a non-prophet orgainization.
Friß, Spammer: bj@eTTCYWgi.7eggert.dyndns.org IsWw@efwjh45.7eggert.dyndns.org - 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/
| |