Messages in this thread | | | Date | Wed, 05 Mar 2008 12:13:28 +0000 | From | Derek M Jones <> | Subject | Re: [PATCH 6/9] drivers/net/wireless/iwlwifi/iwl-4965.c: Correct use of ! and & |
| |
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
| |