次の方法で共有


And 演算子 (Visual Basic)

2 つの Boolean 式の場合は論理積、2 つの数値式の場合はビットごとの積を求めます。

構文

result = expression1 And expression2  

指定項目

result
必須です。 任意の Boolean または数値式。 ブール型の比較の場合、result は 2 つの Boolean 値の論理積となります。 ビットごとの演算の場合、result は 2 つの数値ビット パターンのビットごとの積を表す数値です。

expression1
必須です。 任意の Boolean または数値式。

expression2
必須です。 任意の Boolean または数値式。

Remarks

ブール値の比較では、expression1expression2 の両方が True に評価される場合にのみ、resultTrue になります。 次の表は、result がどのように決定されるかを示しています。

expression1 が次の場合 かつ、expression2 が次の場合 result の値は次のようになります
True True True
True False False
False True False
False False False

注意

ブール値の比較では、And 演算子は常に両方の式を評価します。これには、プロシージャ呼び出しを含めることができます。 AndAlso 演算子は "ショートサーキット" を実行します。つまり、expression1False の場合、expression2 は評価されません。

And 演算子は、数値に適用される場合、2 つの数値式でまったく同じ位置にあるビットのビットごとの比較を実行し、次の表に従って result に対応するビットを設定します。

expression1 内のビットが次の場合 かつ、expression2 内のビットが次の場合 result 内のビットは次のようになります
1 1 1
1 0 0
0 1 0
0 0 0

注意

論理演算子とビット処理演算子は、他の算術演算子および関係演算子より優先順位が低いので、正確な結果を確実に得るために、ビットごとの演算はかっこで囲む必要があります。

データの種類

オペランドが 1 つの Boolean 式と 1 つの数値式で構成されている場合、Visual Basic は Boolean 式を数値に変換し (True の場合は 1、False の場合は 0)、ビットごとの演算を実行します。

ブール値の比較の場合、結果のデータ型は Boolean になります。 ビットごとの比較の場合、結果のデータ型は expression1 および expression2 のデータ型に適した数値型になります。 「演算子の結果のデータ型」の「関係とビットごとの比較」の表を参照してください。

注意

And 演算子を "オーバーロード" できます。つまり、オペランドの型がクラスまたは構造体であるとき、そのクラスまたは構造体で、演算子の動作を再定義できます。 コードで、そのようなクラスまたは構造体に対してこの演算子が使用される場合は、再定義された動作を理解していることを確認してください。 詳細については、「 Operator Procedures」を参照してください。

例 1

次の例では、And 演算子を使用して、2 つの式の論理積を実行します。 結果は、両方の式が True かどうかを表す Boolean 値です。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck As Boolean
firstCheck = a > b And b > c
secondCheck = b > a And b > c

前の例では、それぞれ TrueFalse の結果が生成されます。

例 2

次の例では、And 演算子を使用して、2 つの数値式の個々のビットに対して論理積を実行します。 オペランドの対応するビットが両方とも 1 に設定されている場合、結果パターンのビットが設定されます。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstPattern, secondPattern, thirdPattern As Integer
firstPattern = (a And b)
secondPattern = (a And c)
thirdPattern = (b And c)

前の例では、それぞれ 8、2、および 0 の結果が生成されます。

関連項目