[fpc-devel] Incomplete docs on operator precedence / Question about actual precedence

Tomas Hajny XHajT03 at hajny.biz
Mon Feb 3 12:28:52 CET 2014


On Mon, February 3, 2014 12:10, Sven Barth wrote:
> Am 03.02.2014 12:04, schrieb Michael Van Canneyt:
>> On Mon, 3 Feb 2014, Sven Barth wrote:
>>> Am 03.02.2014 08:58, schrieb Michael Van Canneyt:
>>>> As for unary minus: this is the same as a binary minus in arithmatic
>>>> expressions.
>>>
>>> Not quite. Take this example:
>>> === output end ===
>>>
>>> So unary minus (and also unary plus which is a valid operator as
>>> well!) binds stronger than multiplication.
>>
>> Then that is an anomaly introduced by operator overloading.
>>
>> In math, -2^2 = -4
> Yes and the same is true in FPC with operator overloading. If you add a
> ** operator overload (which uses Trunc(Power(aLeft.i, aRight.i)) ) and
> have this expression: -t1 ** t2 with t1.i = 2 and t2.i = 2 the result
> will be -4 as well.
>
> Please keep in mind that -2^2 is (-2) * (-2).

? -2^2 = -(2^2) = -4 <> (-2)*(-2) ?

Also in FPC:
---
uses
 Math;
begin
 WriteLn (-2**2);
end.
===
...gives "-4".

Tomas





More information about the fpc-devel mailing list