P Witte wrote: > Marcel Kilgus writes: > > >> Wolfgang Lenerz wrote: >> >>>> On an ordinary QL I can type >>>> >>>> f%=-32768/1 >>>> >>>> and find that f% now contains -32768. >>>> >>>> >>> Well that must be a nice bug. >>> >>> unless I'm mistaken, 32768/1 = 32768 >>> >>> and 32768 just doesn't fit in an integer. >>> >> Yes, but -32768 does. Notice the minus ;-) >> > > Ah, but the rub is that "f%=-32768/1" is within range and shouldnt > overflow. Hi all..
This strikes me as a *very* serious bug. The comment that "32768/1" doesn't fit in an integer is totally irrelevent, as the use of the "/", rather than "DIV", means the calculation will always be done in floating point. The result, in any case, is "-32768" which is a perfectly valid integer. What actually happens with "f%=-32768/1" (at least in Minerva) is that the line is parsed to give tokens for "f%", "=", "-32768", "/", "1" and end-of-line. At run time, the two integer values are each converted to floating point and the division is performed (or rather not performed by Minnie, as it notices the division by unity, and ignores it!). The resultant floating point "-32768.0" is then converted back to an integer for the assignment. Syntactically, the minus sign in "f%=0-32768/1" (mentioned in the original post from George) is no longer the prefix monadic operator (which can be legitimately be combined with the 32768 to form an integer token), but is now the infix dyadic operator. The tokenisation will now use floating point for the "32768" (saving one int->fp conversion!). Yet other variants of writing the code could look like "f%=-+327.68E2/+100E-2". Offhand, I'm not sure what happens with these. I'm fairly sure Minerva tends lose the cruddy bits during (re-)tokenisation... it's like that. Bugs aside, the question I'd ask is why someone is using "/" instead of "DIV" when they are apparent intend to do integer calculations. (A challenge... find a genuine *practical* reason for "/" versus "DIV", other than saving typing.) -- L _______________________________________________ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
