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

Michael Van Canneyt michael at freepascal.org
Mon Feb 3 13:22:09 CET 2014



On Mon, 3 Feb 2014, Tomas Hajny wrote:

> 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".

I was already wondering whether all my education had gone for naught :D

Michael.



More information about the fpc-devel mailing list