Date: Fri, 5 Dec 2008 01:31:12 -0800 From: "Garrett Cooper" <yanefbsd@gmail.com> To: "Christoph Mallon" <christoph.mallon@gmx.de> Cc: Maksim Yevmenkin <maksim.yevmenkin@gmail.com>, FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Re: RFC: small syscons and kbd patch Message-ID: <7d6fde3d0812050131p2e9ac761n1c76575d3a3f5792@mail.gmail.com> In-Reply-To: <4938F036.4010600@gmx.de> References: <bb4a86c70812021701i621fdcfjb6a58a7f5cf781d5@mail.gmail.com> <7d6fde3d0812040324y3bf0901cy1f4a6d961362c314@mail.gmail.com> <bb4a86c70812040724w43ddec15yab72920d80d879d3@mail.gmail.com> <20081205072229.GE18652@hoeg.nl> <7d6fde3d0812050034y43a70ce8i49fbba92f9c8943b@mail.gmail.com> <7d6fde3d0812050035u6e3ea930o9e093830a8608444@mail.gmail.com> <20081205084441.GA29312@owl.midgard.homeip.net> <7d6fde3d0812050050l57684eebkf14f252d78b68ec0@mail.gmail.com> <4938F036.4010600@gmx.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Dec 5, 2008 at 1:11 AM, Christoph Mallon <christoph.mallon@gmx.de> wrote: > Garrett Cooper schrieb: >> >> (I feel like I'm getting off on a bikeshed topic, but...) >> >> 1. What dialect of C was it defined in? Is it still used in the >> standard dialect (honestly, this is the first time I've ever seen it >> before, but then again I am a younger generation user)? > > Dialect? The ! operator is plain vanilla standard C. It takes a scalar > operand and returns 1, if it compares equal to 0, otherwise it returns 0. > !!, i.e. two consecutive ! operators, is one of the oldest tricks in the > book, right next to (a > b) - (a < b) for comparison functions and countless > other idioms. > >> 3. What's the real loss of going to `? :', beyond maybe 3 extra >> keystrokes if it's easier for folks who may not be as experienced to >> read? > > I'd like my bikeshed grass green, please. > > Christoph If you really want to split hairs, ! only negates the logic value, whereas ~ actually negates the bits. So technically, you're not flipping 0 to make 1 and vice versa, but instead flipping 0 to make non-zero, etc. There is a clear distinction in hardware. The point was that !! isn't obvious at first glancing the C code. It's important for code to be readable as well as functional (that's why we have style(9)). Getting down to it I'd like to see what the compiler optimizes each as, because I can see dumb compilers saying `!!' translates to `not, bne => set, else set, continue', whereas `? :' could be translated to `bne, set, else set, continue'; I'm sure gcc has moved passed these really minute details. Hopefully this helps shed more light on where I'm coming from. -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7d6fde3d0812050131p2e9ac761n1c76575d3a3f5792>