Operator And (Conjunction)

Returns the bitwise-and (conjunction) of two numeric values

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

Usage
	result = lhs And 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 bitwise-and (conjunction) of the two operands.

Description
	This operator returns the bitwise-and of its operands, a logical 
	operation that results in a value with bits set depending on the bits of 
	the operands (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 boolean-and 
	operation:

		Ŀ
		Lhs BitRhs BitResult
		0      0      0     
		1      0      0     
		0      1      0     
		1      1      1     
		

	No short-circuiting is performed - both expressions are always 
	evaluated.

	The return type depends on the types of values passed. KeyPgByteByte, KeyPgUbyteUByte and 
	floating-point type values are first converted to KeyPgIntegerInteger. If the left 
	and right-hand side types differ only in signedness, then the return 
	type is the same as the left-hand side type (T1), otherwise, the larger 
	of the two types is returned. Only if the left and right-hand side types 
	are both KeyPgBooleanBoolean, the return type is also KeyPgBooleanBoolean.

	This operator can be overloaded for user-defined types.

Example
	' Using the AND operator on two numeric values
	Dim As UByte numeric_value1, numeric_value2
	numeric_value1 = 15 '00001111
	numeric_value2 = 30 '00011110

	'Result =  14  =     00001110
	Print numeric_value1 And numeric_value2
	Sleep

	' Using the AND operator on two conditional expressions
	Dim As UByte numeric_value1, numeric_value2
	numeric_value1 = 15
	numeric_value2 = 25

	If numeric_value1 > 10 And numeric_value1 < 20 Then Print "Numeric_Value1 is between 10 and 20"
	If numeric_value2 > 10 And numeric_value2 < 20 Then Print "Numeric_Value2 is between 10 and 20"
	Sleep

	' This will output "Numeric_Value1 is between 10 and 20" because
	' both conditions of the IF statement is true
	' It will not output the result of the second IF statement because the first
	' condition is true and the second is false.

Dialect Differences
	* In the CompilerOptlang-lang qb dialect, this operator cannot be overloaded.

Differences from QB
	* None

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

