Logical Operators
D provides the following binary logical operators for use in your programs.
The first two operators are equivalent to the corresponding ANSI-C operators.
Table 2-8 D Logical Operators
&& |
logical AND:
true if both operands are true |
|| |
logical OR: true if one or both
operands are true |
^^ |
logical XOR: true if exactly one operand is true |
Logical operators are most frequently used in writing D predicates. The logical
AND operator performs short-circuit evaluation: if the left-hand operand is false, the
right-hand expression is not evaluated. The logical OR operator also performs short-circuit
evaluation: if the left-hand operand is true, the right-hand expression is not
evaluated. The logical XOR operator does not short-circuit: both expression operands are
always evaluated.
In addition to the binary logical operators, the unary ! operator may
be used to perform a logical negation of a single operand: it
converts a zero operand into a one, and a non-zero operand into
a zero. By convention, D programmers use ! when working with integers
that are meant to represent boolean values, and == 0 when working with
non-boolean integers, although both expressions are equivalent in meaning.
The logical operators may be applied to operands of integer or pointer
types. The logical operators interpret pointer operands as unsigned integer values. As
with all logical and relational operators in D, operands are true if
they have a non-zero integer value and false if they have a
zero integer value.