Operator Orelse (Short Circuit Inclusive Disjunction)

Returns the short circuit-or (Inclusive Disjunction) of two numeric values

Syntax
	KeyPgDeclareDeclare KeyPgOperatorOperator OrElse ( KeyPgByrefByRef lhs KeyPgAsAs T1, KeyPgByrefByRef rhs KeyPgAsAs T2 ) KeyPgAsAs Ret

Usage
	result = lhs OrElse rhs

Parameters
	lhs
		The left-hand side expression.
	T1
		Any numeric or boolean type.
	rhs
		The right-hand side expression.
	T2
		Any numeric or boolean type.
	Ret
		A numeric or boolean type (varies with T1 and T2).

Return Value
	Returns the short circuit-or (inclusive disjunction) of the two 
	operands.

Description
	This operator evaluates the left hand side expression.  If the result is 
	nonzero, then -1 (true) is immediately returned.  If the result is zero 
	then the right hand side is evaluated, and the logical result from that 
	is returned, returning -1 (true) for a nonzero value or 0 (false) for 
	zero.
	(for conversion of a boolean to an integer, false or true boolean value 
	becomes 0 or -1 integer value)

	The truth table below demonstrates all combinations of a short 
	circuit-or operation, the '-' denotes that the operand is not evaluated.

		Ŀ
		Lhs ValueRhs Value      Result
		0        0              0     
		0        nonzero        -1    
		nonzero  (not evaluated)-1    
		

	OrElse equivalent to:
	Iif( Lhs = 0, Rhs <> 0 , -1 )

	Short-circuiting is performed - only expressions needed to calculate the 
	result are evaluated.  The left hand side lhs is evaluated first, and 
	only if it evaluates to zero (false) is the right hand side rhs also 
	evaluated. If the left hand side evaluation lhs returns non-zero (true), 
	it is known that at that point that the overall condition is true, so 
	the right hand side rhs is not evaluated (skipped).

	The return type is almost always an KeyPgIntegerInteger, of the value 0 or -1, 
	denoting false and true respectively. Except if the left and right-hand 
	side types are both KeyPgBooleanBoolean, then the return type is also KeyPgBooleanBoolean.

	This operator cannot be overloaded for user-defined types.

Example
	'' Using the ORELSE operator to test
	'' if a value is out of range

	Dim As Integer n
	Input "Enter a number between 1 and 10: ", n

	Function test(ByVal n As Integer) As Integer
	   Print "expression evaluated"
	   Return n
	End Function

	'' print value only if n is in range [1, 10]
	If test(n) < 1 OrElse test(n) > 10 Then  '' if n < 1, second expression is not evaluated
	   Print "   => out of range"
	Else
	   Print "   => n ="; n
	End If
	Sleep

Differences from QB
	* This operator was not available in QB.

See also
	* KeyPgOpAndAlsoAndAlso
	* KeyPgOpOrOr
	* TblTruthOperator Truth Tables

