Sign in Join
Wiki copytemporary

false and true

Sent here from True.

The constants false and true are used to define the false and true conditions of a boolean variable. They are manifest constants that are defined as part of the standard data types the compiler initially knows about.

These constant values must be predefined by the compiler as there is no way to define them in terms of anything else. They are defined via compiler/psystem.pas as part of the system unit.

As of FPC 3.0.0 false and true are no longer reserved words. Thus the following program is valid, compiles and is “usable”:

pascal
program falseAndTrue(input, output, stderr);

const
    true = 42;

begin
    writeLn(true);                 // prints 42
    //writeLn(true and false);     // does not compile
    writeLn(system.true and false) // prints FALSE
end.

Internal value

pascal
program falseDemo(input, output, stderr);

uses
    typInfo;

begin
    writeLn(false);                            // prints FALSE
    
    // enumerative actions ------------------------------------------
    writeLn(ord(false));                       // prints 0
    writeLn(succ(false));                      // prints TRUE
    // next two statements generate compile errors
        // "Error: range check error while evaluating constants (-1 must be between 0 and 1)"
    writeLn(pred(false));
        // " Error: range check error while evaluating constants (2 must be between 0 and 1)"                      
    writeLn(succ(succ(false)));                
    
    // data type ----------------------------------------------------
    writeLn(sizeOf(false));                    // prints 1
    writeLn(bitSizeOf(false));                 // prints 8
    writeLn(PTypeInfo(typeInfo(false))^.kind); // prints tkBool
    writeLn(PTypeInfo(typeInfo(false))^.name); // prints Boolean
end.

When typecasting or interpreting any numeric value as a boolean value, it is important to know, that any non-zero value means true whilst only 0 (zero) is false.

Confer ISO 7185 § “Required simple-types”.

Two types of True

(according to developer PascalDragon) There are two types of True in Pascal:

See also


From the Free Pascal wiki, page "false and true", as it stood on 2023-10-18 after a change by FPC user, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.