[fpc-devel] weird syntax

Bram Kuijvenhoven kuifwaremailinglists at xs4all.nl
Tue Dec 11 18:17:23 CET 2007

Michael Schnell wrote:
> Andrew Haines wrote:
>> Is it possible to make this work:
>> if X > 3 or < 10 then ...
>> of course it would be shorthand for: if (X>3) or (X<10) then....
> The "or" operator is stronger than the "<" operator by definition. This 
> can't be changed.
> In C we have a logical or ("||") and a binary or ("|"), as there is no 
> boolean type. In Delphi language there is only one operator "or", as the 
> type defines the makeup of the operation. While this is nice, it 
> prevents the "<" operator from being stronger that "or", as the "or" 
> might be bitwise.

In C the operators &, |, && and || *all* have lower precedence than ==, !=, <, >, <= and >=. (As a consequence, in C you probably want to use parenthesis in an expression like (mask & 0xF38A) == 0xF080.)

Though I also don't like the parenthesis in (X>3) or (X<10), I think it is not really a good plan to change the precedence of operators in FPC, since it encourages writing code that is not compatible with Pascal standards.



More information about the fpc-devel mailing list