delphi - mathematical 'not' of integer -


why delphi perform mathematical 'not' of integer rather force cast boolean value in while looping ? example

var myint:integer; ... myint:=1;   while not myint=5 begin   myint:=myint+1;   showmessage('myint : '+inttostr(myint)); end;     

your expression uses 2 operators: not , =. in order understand how parsed need consult table of operator precedence.

 operators    precedence ---------------------------- @            first (highest) not ---------------------------- *            second / div mod , shl shr ---------------------------- +            third - or xor ---------------------------- =            fourth (lowest) <> < > <= >= in ---------------------------- 

this shows not has highest precedence of operators, , of higher precedence =. means expression parsed if were:

(not myint) = 5 

in expression, because bound integral variable, not biwise negation.

in order result desire must use parentheses indicate wish perform equality test before not:

not (myint = 5) 

now, in expression, (myint = 5) logical expression , not operator logical negation.

the answer question of nature found in table of operator precedence , pay dividends become familiar table. table tell how expression omits parentheses parsed.

finally rudy points out, specific expression cleanly written using <> operator:

myint <> 5 

Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -