演算子の種類

 プログラムの中で処理を表現するために、演算子を使用します。次のような種類があります。

■ 算術演算子

 値を計算します。

演算子 意味 使用例
+ 一方の数値を他方の数値に足す num1 + num2
- 一方の数値を他方の数値から引く num1 – num2
- 数値の符号を反転させる -num1
* 一方の数値に他方の数値を掛ける num1 * num2
/ 一方の数値を他方の数値で割る num1 / num2
¥ 一方の数値を他方の数値で割ったときの商を求める(整数) num1 ¥ num2
Mod 一方の数値を他方の数値で割った時の余りを求める num1 Mod num2
^ 一方の数値を他方の数値で累乗する num1^2
<< 数値のビット・パターンを左にシフトする num1 << 1
>> 数値のビット・パターンを右にシフトする num1 >> 1
算術演算子

○ プロジェクト

次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 ArithmeticTest

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Sub Main()
  2.  '変数の宣言
  3.  Dim num1 As Integer = 10, num2 As Integer = 3
  4.  '算術演算の結果を表示する
  5.  Console.WriteLine("加算: {0}", num1 + num2)
  6.  Console.WriteLine("減算: {0}", num1 - num2)
  7.  Console.WriteLine("反転: {0}", -num1)
  8.  Console.WriteLine("乗算: {0}", num1 * num2)
  9.  Console.WriteLine("除算: {0}", num1 / num2)
  10.  Console.WriteLine("除算(整数): {0}", num1 ¥ num2)
  11.  Console.WriteLine("剰余: {0}", num1 Mod num2)
  12.  Console.WriteLine("べき乗: {0}", num1 ^ 2)
  13.  Console.WriteLine("左シフト: {0}", (num1 << 1))
  14.  Console.WriteLine("右シフト: {0}", (num1 >> 1))
  15.  Console.ReadLine()
  16. End Sub

○ 実行結果

加算: 13
減算: 7
反転: -10
乗算: 30
除算: 3.33333333333333
除算(整数): 3
剰余: 1
べき乗: 100
左シフト: 20
右シフト: 5

○ 解説

 5行目では2つの変数を宣言しています。8~17行目で算術演算をして結果を表示しています。今回はConsole.WriteLine()の指定の方法は複合書式指定文字列を使用しています。この方法は、文字列の中に「{}」を指定して、そのあと「,」で埋め込むデータを指定します。

 16行目は変数のデータを2進数表現で左側にずらします。1つ、ずらすと10進数で2倍しているのと同じことになります。2つずらすと4倍、3つずらすと8倍と、1つずらすごとに2の2乗倍することになります。17行目は変数のデータを2進数表現で右側にずらします。1つずらすと、10進数で2で割っているのと同じことになります。2つずらすと4で割る、3つずらすと8で割ると、1つずつずらすごとに2の2乗で割っていることになります。

■ 代入演算子

 計算結果を代入します。

演算子 意味 使用例
= データを変数に代入する num = 2
*= 変数に格納されているデータと乗算し、その結果を変数に代入する num *= 2
/= 変数に格納されているデータと除算し、その結果を変数に代入する num /= 2
¥= 変数に格納されているデータと除算し、その整数の結果を変数に代入する num ¥= 2
+= 変数に格納されているデータと加算し、その結果を変数に代入する
文字列型の場合は文字列を連結し、その結果を変数に代入する
num += 2
+= 変数に格納されているデータと加算し、その結果を変数に代入する
文字列型の場合は文字列を連結し、その結果を変数に代入する
num += 2
str += "2"
-= 変数に格納されているデータを減算し、その結果を変数に代入する num -= 2
<<= 変数に格納されているデータを左シフトし、その結果を変数に代入する num <<= 2
>>= 変数に格納されているデータを右シフトし、その結果を変数に代入する num >>= 2
^= 変数に格納されているデータとのべき乗を求め、その結果を変数に代入する num ^= 2
&= 変数に格納されているデータと文字列を結合し、その結果を変数に代入する str &= "文字"
代入演算子

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 AssignmentTest

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Sub Main()
  2.  '変数の宣言
  3.  Dim num As Integer
  4.  '代入演算とその結果を表示する
  5.  num = 10
  6.  Console.WriteLine("代入: " & num)
  7.  num ^= 2
  8.  Console.WriteLine("べき乗: " & num)
  9.  num *= 2
  10.  Console.WriteLine("乗算: " & num)
  11.  num /= 2
  12.  Console.WriteLine("除算: " & num)
  13.  num ¥= 3
  14.  Console.WriteLine("除算(整数): " & num)
  15.  num += 2
  16.  Console.WriteLine("加算: " & num)
  17.  num -= 5
  18.  Console.WriteLine("減算: " & num)
  19.  num <<= 1
  20.  Console.WriteLine("左シフト: " & num)
  21.  num >>= 2
  22.  Console.WriteLine("右シフト: " & num)
  23.  Dim str As String = "メロンが"
  24.  str &= "食べたい。"
  25.  Console.WriteLine("文字列: " & str)
  26.  Console.ReadLine()
  27. End Sub

○ 実行結果

代入: 10
べき乗: 100
乗算: 200
除算: 100
除算(整数): 33
加算: 35
減算: 30
左シフト: 60
右シフト: 15
文字列: メロンが食べたい。

○ 解説

 8行目は変数numに値10を格納します。10行目は先ほど格納した10を2乗して再び変数numに格納します(変数の値は100)。12行目は先ほど格納した100に2を乗算して再び変数numに格納します。14行目は先ほど格納した200に2で除算して変数numに格納します。16行目は先ほど格納した100に3で除算した整数部分を変数numに格納します。18行目は先ほど格納した33に2を加算して変数numに格納します。20行目は先ほど格納した35に5を減算して変数numに格納します。22行目は先ほど格納した30を左に1ビット分ずらして、変数numに格納します。24行目は先ほど格納した60を右に2ビット分ずらして、変数numに格納します(格納される値は15)。

 26行目は変数strに文字列"メロンが"を格納しています。27行目で変数strに格納されている"メロンが"に"食べたい。"を文字列結合して、再び変数strに格納しました。

■ 連結演算子

 文字列を結合します。

演算子 意味 使用例
& 複数の文字列を、1つの文字列に結合する "abc" & "def"
+ 結合ずるデータが文字列なら結合、他方が数値の場合は文字列が数値に変換されて加算する "123" + 456
連結演算子

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 ConcatenationTest

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Sub Main()
  2.  '変数の宣言
  3.  Dim str As String = "豆腐が"
  4.  Dim num As Double = 100.5
  5.  '文字列連結して表示
  6.  Console.WriteLine(str & "好き")
  7.  Console.WriteLine(str + "食べたい")
  8.  Console.WriteLine(num + "200")
  9.  Console.ReadLine()
  10. End Sub

○ 実行結果

豆腐が好き
豆腐が食べたい
300.5

○ 解説

 9行目は変数strに文字列"好き"を連結します。10行目も同様に、変数strに文字列"食べたい"を連結します。11行目は文字列"200"をDouble型の値に変換して、変数numと加算します。

■ 比較演算子

 条件を比較してBoolean値を算出します。

演算子 意味 使用例
= 2つのデータが等しいことを確認する num1 = num2
<> 2つのデータが等しくないことを確認する num1 <> num2
< 一方のデータが他方のデータより小さいことを確認する num1 < num2
> 一方のデータが他方のデータより大きいことを確認する num1 > num2
<= 一方のデータが他方のデータ以下であることを確認する num1 <= num2
>= 一方のデータが他方のデータ以上であることを確認する num1 >= num2
Is 2つのオブジェクト変数が同じオブジェクト・インスタンスを参照していることを確認する str Is Nothing
IsNot 2つのオブジェクト変数が別のオブジェクト・インスタンスを参照していることを確認する str IsNot Nothing
Like 文字列に指定したパターンが含まれるかどうかを確認する Str Like "*a*"
比較演算子

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 ComparisonTest

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Sub Main()
  2.  '変数の宣言
  3.  Dim num1 As Integer = 10, num2 As Integer = 5, str As String = "abc"
  4.  '比較した結果を表示
  5.  Console.WriteLine("等しい: " & (num1 = num2))
  6.  Console.WriteLine("等しくない: " & (num1 <> num2))
  7.  Console.WriteLine("より小さい: " & (num1 < num2))
  8.  Console.WriteLine("より大きい: " & (num1 > num2))
  9.  Console.WriteLine("以下: " & (num1 <= num2))
  10.  Console.WriteLine("以上: " & (num1 >= num2))
  11.  Console.WriteLine("空である: " & (str Is Nothing))
  12.  Console.WriteLine("空でない: " & (str IsNot Nothing))
  13.  Console.WriteLine("パターンを含む: " & (str Like "*a*"))
  14.  Console.ReadLine()
  15. End Sub

○ 実行結果

等しい: False
等しくない: True
より小さい: False
より大きい: True
以下: False
以上: True
空である: False
空でない: True
パターンを含む: True

○ 解説

 8行目は変数num1の値と変数num2の値が等しいかどうかを判断します。等しくないのでFalseが出力されます。9行目は変数num1の値と変数num2の値が等くないかどうかを判断します。等しくないのでTrueが出力されます。10行目は変数num1の値が変数num2の値がより小さいかどうかを判断します。小さくないのでFalseが出力されます。11行目は変数num1の値が変数num2の値がより大きいかどうかを判断します。大きいのでTrueが出力されます。12行目は変数num1の値が変数num2の値以下かどうかを判断します。以下ではないのでFalseが出力されます。13行目は変数num1の値が変数num2の値以上かどうかを判断します。以上なのでTrueが出力されます。

 14行目は変数strが空かどうかを判断します。文字列型のように参照型の変数は、格納される値はメモリのアドレス値なので、参照があるかないかの判断となります。参照先が設定されていない場合はNothingとなります。15行目は変数strが空でないかどうかを判断します。変数strには文字列"abc"の参照先がセットされているのでTrueが出力されます。16行目は変数strの文字列”abc”にパターンで指定されているように文字列”a”が含まれているので、Trueが出力されます。なお、パターンに指定している「*」はワイルドカードと呼ばれ、0個以上の文字を表します。パターンには次のような文字を指定することができます。

文字 パターン内容
* 0個以上の文字
? 任意の1文字
# 任意の1桁(0-9)
[文字] 任意の1文字
[!文字] 含まない任意の1文字
パターンで指定する文字

■ 論理演算子

 論理演算をしてBoolean値を算出します。

演算子 意味 使用例
Not ブール値の論理否定を求める Not num1 < num2
And 2つのブール値の論理積を求める num1 > 1 And num1 < 10
AndAlso 2つのブール値の論理積を求める(ショートサーキット)
必要な場合のみ2番目の論理演算を処理する
num1 > 1 AndAlso num1 < 10
Or 2つのブール値の論理和を求める num1 > 0 Or num2 < 0
OrElse 2つのブール値の論理和を求める(ショートサーキット)
必要な場合のみ2番目の論理演算を処理する
num1 > 0 OrElse num2 < 0
Xor 2つのブール値の排他的論理和を求める num1 = 10 Xor num2 = 5
論理演算子

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 LogicalTest

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Sub Main()
  2.  '変数の宣言
  3.  Dim num1 As Integer = 10, num2 As Integer = 5
  4.  '論理演算の結果を表示
  5.  Console.WriteLine("否定: " & (Not num1 < num2))
  6.  Console.WriteLine("論理積: " & (num1 > 0 And num1 < 10))
  7.  Console.WriteLine("論理和: " & (num1 > 0 Or num2 < 0))
  8.  Console.WriteLine("排他的論理和: " & (num1 = 10 Xor num2 = 5))
  9.  Console.WriteLine("論理積(省略): " & (num1 > 0 AndAlso num1 < 10))
  10.  Console.WriteLine("論理和(省略): " & (num1 > 0 OrElse num2 < 0))
  11.  Console.ReadLine()
  12. End Sub

○ 実行結果

否定: True
論理積: False
論理和: True
排他的論理和: False
論理積(省略): False
論理和(省略): True

○ 解説

 8行目は変数num1と変数num2を比較します。今回は「10 < 5」となるので条件としてはFalseです。しかし、Notが付いているので否定として扱われ、Falseではない、つまりTrueと出力されます。

 9行目は2つの条件判断の結果をもとに判断します。今回は「num1 > 0」でTrue、「num2 < 10」でFalseとなります。この2つの判断の結果を「True And False」のようにさらに判断します。結果はFalseになります。論理積は次のような結果が出力されます。2つの条件がTrueの場合のみTrueとなります。

条件1 条件2 出力
false false false
false true false
true false false
true true true
条件1 And 条件2の出力

 10行目は2つの条件判断の結果をもとに判断します。今回は「num1 > 0」でTrue、「num2 < 0」でFalseとなります。この2つの判断の結果を「True Or False」のようにさらに判断します。結果はTrueになります。論理和は次のような結果が出力されます。2つの条件のうち少なくともどちらか一方がTrueであればTrueになります。

条件1 条件2 出力
false false false
false true true
true false true
true true true
条件1 Or 条件2の出力

 11行目は2つの条件判断の結果をもとに判断します。今回は「num1 = 10」でTrue、「num2 = 5」でTrueとなります。この2つの判断の結果を「True Xor True」のようにさらに判断します。結果はFalseになります。排他的論理和は次のような結果が出力されます。2つの条件の結果が違えばTrueになります。

条件1 条件2 出力
false false false
false true true
true false true
true true false
条件1 Xor 条件2の出力

 12行目、13行目は、他方の条件で全体が決まる場合は、もう一方の条件判断を省略します。結果としてAndとOrそれぞれの判断と同じになります。

■ その他の演算子

 その他の種類の演算子を紹介します。

演算子 意味 使用例
GetType 指定された型のオブジェクトを返す GetType(Integer)
TypeOf 指定されたデータ型と比較する TypeOf num Is Integer
その他演算子

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 TypeTest

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Sub Main()
  2. Sub Main()
  3. '変数の宣言
  4. Dim num As Object = 2
  5. '演算子を指定して結果を表示
  6. Console.WriteLine("データ型取得: " & GetType(Integer).ToString())
  7. Console.WriteLine("データ型判断: " & (TypeOf num Is Integer))
  8. Console.ReadLine()
  9. End Sub

○ 実行結果

データ型取得: System.Int32
データ型判断: True

○ 解説

 8行目はInteger型のタイプを取得しています。取得できたのはInt32という構造体です。この構造体は、整数値を保存するほか、整数値を扱う機能なども内部で持っています。今回は、ToString()という機能を使ってデータ型名を表示しています。

 9行目は変数numのデータ型がIntegerとして認識できるかを調べています。変数numはObject型ですので汎用型となります。具体的にどのような型で扱うことができるかを調べています。代入したデータはリテラルでInteger型のため、この変数はInteger型として扱うことができます。Double型など他の型かどうかを調べるとFalseが出力されます。

前へ   次へ