Return-path: Received: from queueout04-winn.ispmail.ntl.com ([81.103.221.58]:51890 "EHLO queueout04-winn.ispmail.ntl.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757442AbYCEM3D (ORCPT ); Wed, 5 Mar 2008 07:29:03 -0500 Message-ID: <47CE8E68.5060701@knosof.co.uk> (sfid-20080305_122915_937019_EEBFF4E6) Date: Wed, 05 Mar 2008 12:13:28 +0000 From: Derek M Jones MIME-Version: 1.0 To: Ingo Molnar CC: Harvey Harrison , Christopher Li , Julia Lawall , yi.zhu@intel.com, linux-wireless@vger.kernel.org, ipw3945-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Alexander Viro , linux-sparse@vger.kernel.org, Josh Triplett Subject: Re: [PATCH 6/9] drivers/net/wireless/iwlwifi/iwl-4965.c: Correct use of ! and & References: <20080305063842.GA24495@elte.hu> <70318cbf0803042249j57d7f3a3j7666961a9132b10b@mail.gmail.com> <20080305070201.GA32434@elte.hu> <1204700995.17484.7.camel@brick> <20080305081904.GA17789@elte.hu> In-Reply-To: <20080305081904.GA17789@elte.hu> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Sender: linux-wireless-owner@vger.kernel.org List-ID: All, >>> i think there might be similar patterns: "x & !y", "!x | y", "x | !y" ? >>> >> Well, (!x & y) and (!x | y) are probably the two that might have been >> intended otherwise. (x & !y), (x | !y) are probably ok. > > i think the proper intention in the latter cases is (x & ~y) and > (x | ~y). > > My strong bet is that in 99% of the cases they are real bugs and && or > || was intended. Developer knowledge of operator precedence and the issue of what they intended to write are interesting topics. Some experimental work is described in (binary operators only I'm afraid): www.knosof.co.uk/cbook/accu06a.pdf www.knosof.co.uk/cbook/accu07a.pdf The ACCU 2006 experiment provides evidence that developer knowledge is proportional to the number of occurrences of a construct in source code, it also shows a stunningly high percentage of incorrect answers. The ACCU 2007 experiment provides evidence that the names of the operands has a significant impact on operator precedence choice. I wonder what kind of names are used as the operand of unary operators? I would expect the ~ operator to have a bitwise name, but the ! operator might have an arithmetic or bitwise name. -- Derek M. Jones tel: +44 (0) 1252 520 667 Knowledge Software Ltd mailto:derek@knosof.co.uk Applications Standards Conformance Testing http://www.knosof.co.uk