### xor

#### Synopsis

operator xor (operand1, operand2: Boolean) = Result: Boolean;

or

operator xor (operand1, operand2: `integer_type`) = Result: `integer_type`;

or

procedure xor (var operand1: `integer_type`; operand2: `integer_type`);

#### Description

In GNU Pascal, xor has three built-in meanings:

- Logical “exclusive or” between two Boolean-type
expressions. The result of the operation is of Boolean type.
(Logical foo xor bar in fact has the same effect as
foo <> bar.)
- Bitwise “exclusive or” between two integer-type expressions.
The result is of the common integer type of both expressions.
- Use as a “procedure”: operand1 is “xor”ed bitwise with
operand2; the result is stored in operand1.

#### Conforming to

ISO Pascal does not define the xor operator;
Borland Pascal and Delphi do.

Use of xor as a “procedure” is a GNU Pascal extension.

#### Example

program XorDemo;
var
a, b, c: Integer;
begin
if (a = 0) xor (b = 0) then
c := 1 { happens if either `a' or `b' is zero, }
{ but not if both are zero or both nonzero }
else if (a xor b) = 0 then { bitwise xor }
c := 2 { happens if a = b }
else
xor (c, a) { same as `c := c xor a' }
end.

#### See also

Keywords, and, or, Operators.