docs.roxen.comView this page in a printer friendly mode
DocsPike7.0TutorialExpressions
Copyright © 2012, Roxen Internet Software
Suggestions, comments & compliments
manuals@roxen.com
 DEMO  DOCS  PIKE
 COMMUNITY  DOWNLOAD
www.roxen.com

   

Some Terminology
Arithmetical Operations
Operations on Complex Types
Comparison
Logical Expressions
Bitwise Operations
Operations on Sets
Indexing
Assignment
Type Conversions
The Comma Operator
Call and Splice
Operator Precedence and Associativity

Logical Expressions

We often want to express conditions such as "if this is true, and that is true, then we do something". Such calculations with truth values are done with the logical operators in Pike:

OperationSyntaxResult

Logical and

a && b

If a is false, a is returned and b is not calculated. Otherwise, b is returned.

Logical or

a || b

If a is true, a is returned and b is not calculated. Otherwise, b is returned.

Logical not

! a

Returns 0 if a is true, 1 otherwise.

For example, if the temperature is below 100 degrees, and we still have some fuel, we want to burn some more:

if(temperature < 100 && fuel > 0)
burn();

Both && and || always calculate their first argument, but the second one is calculated only if it is necessary to find the value of the entire expression. In a && b, if a is false, a and b can never be true, so we don't bother to calculate b. This is useful in cases like this:

if(i <sizeof(a) && a[i] != 0)
smorgle(a);

If i is too big to be a valid index in the array a, which we check in the first part of the condition, we will get an error if we try the operation a[i], and our program will be interrupted.

Since the || operator returns the first argument that is non-zero, there is a useful trick that can be used to check a number of variables:

return a || b || "";

This will return a, except in the case when a is 0, in which case it will return b. Except in the case when b also is 0, in which case it will return an empty string.