Messages in this thread | | | Date | Tue, 20 Nov 2012 13:10:49 -0600 | From | Daniel Santos <> | Subject | Re: [PATCH v5 6/9] bug.h: Prevent double evaulation of in BUILD_BUG_ON |
| |
On 11/17/2012 08:38 AM, Borislav Petkov wrote: > On Thu, Nov 15, 2012 at 01:11:15PM -0600, Daniel Santos wrote: >> Ah yes. I did notice that at one point, but I think it slipped >> my mind. Also, the kernel has introduced me to the usage of the >> !! construct, of which I'm well versed in its affects in various >> situations and how gcc's optimizer ends up treating its usage, so >> probably another reason I didn't change it immediately. But it's >> basically shorthand for the expression (condition ? 1 : 0), correct?
Oh, this is embarrassing, The sentence above should have read:
... the kernel has introduced me to the usage of the !! construct, of which I'm *not* well versed in ...
hah! oh well
> I don't think so: "!!" is simply a double negation which turns the > whatever wild construct you have into either 0 or 1, depending on what > it evaluates to. > > But I don't know what the standard says so you'll have to check :-)
Here we go, from section §6.5.3.3:
The result of the logical negation operator ! is 0 if the value of its operand compares unequal to 0, 1 if the value of its operand compares equal to 0. The result has type int. The expression !E is equivalent to (0==E).
I simply wasn't aware that it promised a "true" value to be one exactly. Hurray for expanding horizons! :)
Daniel -- 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/
| |