Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Inequality (*solved*)
#1
Am I doing something wrong here? I think the order of operations is messing up. This looks very odd. Is BAND a lower priority than = ?

Code:
dim n as uInteger cls for n=0 to 65530 print at 10,10;n;" ";n BAND 7 print at 12,6;"n BAND 7 = 7 is "; IF n BAND 7 = 7 then print "TRUE " else print "FALSE" END IF pause 0 next n


I /think/ this is doing boolean logic of

( n BAND ( 7 = 7 ) )

Or, n BAND 1

Which can't be right, surely?
Reply
#2
Could be a bug, yes. Will check it. If bAND has the same priority as AND then it will proceed as you said. bAND should behave like * operator (multiply), I Think
Reply
#3
Hi, Britlion.
In effect, the operators priority was not the standard one.
I think this one is the expected one. :?:
Code:
('left', 'OR'), ('left', 'AND'), ('left', 'XOR'), ('right', 'NOT'), ('left', 'LT', 'GT', 'EQ', 'LE', 'GE', 'NE'), ('left', 'BOR'), ('left', 'BAND', 'BXOR', 'SHR', 'SHL'), ('left', 'BNOT', 'PLUS', 'MINUS'), ('left', 'MOD'), ('left', 'MUL', 'DIV'), ('right', 'UMINUS'), ('right', 'POW')
Note: The "left" and "right" refers to the operator associativity. Less precedence is on top, higher precedence is on the bottom (so POW -> ^ is takes the highest precedence). Also now BOR, BAND and BXOR have higher precedence than =, <>, >=, <= etc... (relational operators, here named EQ, NE, LE, etc...)
Reply
#4
Ok. Please download version 1.2.9s882. It addressed many bugs (this being one of them).
Please, try it and tell me. :roll:
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)