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

Hans-Peter Diettrich DrDiettrich1 at aol.com
Mon Feb 3 10:42:04 CET 2014

Martin Frb schrieb:

> Further, it appears that ^ has a higher precedence than  unary -

IMO pointer/address arithmetic (should) follows its own rules.
Unary - and @ should not be applicable to addresses. @ also is 
restricted to arguments which *do* have an address, i.e. not applicable 
to arithmetic expressions or properties.

Applicable binary operators depend on the type of both arguments, e.g. 
it's valid to subtract addresses (yielding an ordinal value), but adding 
addresses should be disallowed, while adding an ordinal value to an 
pointer is okay (yealding another address).

> //  p:= - at i;   // if enabled, next line will crash

This should not compile, unary - is not applicable to addresses.

>   writeln( -p^ ); // writes -99

Here ^ must take precedence, applied to an pointer/address.

"p+i^" is questionable, the only valid interpretation is (p+i)^.

IOW applicable operators and precedence depend on the type of the 


More information about the fpc-devel mailing list