ID: 22736 Updated by: [EMAIL PROTECTED] Reported By: soletan at toxa dot de -Status: Open +Status: Bogus Bug Type: Feature/Change Request Operating System: Linux PHP Version: 4.3.1 New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php I think your precedence information seems to be a little awry. According to the manual page at http://www.php.net/manual/en/language.operators.php, ~ has greater priority than != has greater priority than &, ^, | (in that order). This means that your example of $a & ~$b != 0 actually equates to $a & ((~$b) != 0) (and I've just tested this, so I'm sure it's right.) This isn't nearly as bad as you suggest (but, I agree, a little unexpected -- until I checked, I'd have expected &, ^, | to be higher-precedence than ==, != etc!). So, your example of ~p ^ q *will* be evaluated as (~p) ^ q, and, indeed, any expression containing solely bitwise operators will function as expected -- only if you add comparison operators into the mix will you have to be careful to add parentheses to get the required result. Previous Comments: ------------------------------------------------------------------------ [2003-03-16 07:28:38] soletan at toxa dot de Hi, maybe this can't be done because of scripts relying on current operator precedence, but for the statement $a & ~$b != 0 your current precedence rules would do $a & ~( $b != 0 ) which is quite unusual. Traditional logics (used by Frege and others) would first compute the negation, it is the most strongly bound operator. For instance, having ~p ^ q as a structured expression the negation would precede any other operator p is argument of, or: p is not argument of the conjunction, but the negation's result is. Maybe I'm still false, but that's what I have expected to write logical calculations like for years. Best Regards, Thomas Urban ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22736&edit=1