目次→
演算子→
論理演算子→
Operator XOR (Exclusive Disjunction)←オリジナル・サイト
2つの数値の、ビット xor(排他的論理和)を返します。
構文:
用法:
result = lhs Xor rhs
パラメタ:
lhs
式の左側。
T1
数値型か論理型のいずれか。
rhs
式の右側。
T2
数値型か論理型のいずれか。
Ret
数値型か論理型 (T1 と T2 によって変わる)
戻り値:
二つの演算対象の、ビット xor を返します。
記述:
この演算子は、その演算対象のビット排他論理和 を返します。ビット排他論理和 とは、演算対象のビットに従った、ビット組合せの値を返す、論理演算です。
(ブーリアンの整数への変換では、論理値の誤は 整数値 0 に、真は -1 になります)
下の真理値表は、論理(ブール) 排他的論理和 操作の、すべての組み合わせを示します:
Lhs ビット |
Rhs ビット |
結果 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
短絡 は実行されません--両方の式は、いつも評価されます。
戻り値の型は、渡された値の型に頼ります。
Byte,
Ubyte と浮動小数点型の値は、最初に、
Integer に変換されます。
左と右の型が、符号だけ異なるなら、戻り値の型は、左側 (
T1) の型と同じです。そうでない場合は、2つの型の、より大きい方を返します。
左側と右側の両方が
Boolean 型の場合だけ、戻り型も
Boolean です。
この演算子を、ユーザ定義型のために、多重定義することができます。
例:
' 2つの数値で、XOR 演算子を使用します
Dim As UByte numeric_value1, numeric_value2
numeric_value1 = 15 '00001111
numeric_value2 = 30 '00011110
'結果 = 17 = 00010001
Print numeric_value1 Xor numeric_value2
Sleep
' 2つの条件式で、XOR 演算子を使用します
Dim As UByte numeric_value1, numeric_value2
numeric_value1 = 10
numeric_value2 = 15
If numeric_value1 = 10 Xor numeric_value2 = 20 Then Print "Numeric_Value1 が 10 か、あるいは、Numeric_Value2 が 20 です。"
Sleep
' これは、「Numeric_Value1 は 10 か、あるいは、Numeric_Value2 が 20 です。」を出力します。
' なぜなら、IF 命令文の、1番目の条件だけが当てはまるからです。
方言差:
QBからの違い:
参照: