[C#] 6. 演算子


Study / C#    作成日付 : 2019/07/04 00:09:43   修正日付 : 2021/07/12 19:56:09

こんにちは。明月です。


この投稿はC#の演算子に関する説明です。


我々がパソコンを使う時にゲームもするし、様々な業務のためにデータを格納するかプログラムを作りますが、実は性能がすごくよい計算機です。

つまり、グラフィックを描画や業務のためのプログラムはすべて計算により出力することです。なので、プログラム中で一番に重量なことは演算です。

演算とは一般数学の足す、引く、掛ける、分ける計算と同じです。 でも、プログラムは単純な数学の計算だけではなく、ビットの計算、論理計算もあります。

演算子 使用方法 説明
算術演算子
+ a + b 足す
- a - b 引く
* a * b 掛ける
/ a / b 分ける
% a % b 分けるのあまり
++ ++a, a++ 値を1を増加する。(前位、後位演算子)
-- --a, a-- 値を1を減少する。(前位、後位演算子)
関係演算子
> a > b aがbより大きいならtrueを返却、小さいや同じならfalseを返却
>= a >= b aがbより大きいか同じならtrueを返却、小さいならfalseを返却
< a < b aがbより小さいならtrueを返却、大きいか同じならfalseを返却
<= a <= b aがbより小さいか同じならtrueを返却、大きいならfalseを返却
== a == b aとb同じならtrueを返却、違いならfalseを返却
!= a != b aとbが違いならtrueを返却、同じならtrueを返却
ビット演算子
<< a << b 整数aの2進数値を左にb程移動して余りは0に設定
>> a >> b 整数aの2進数値を右にb程移動して余りは正数は0に負数は1に設定
& a & b aとbをand計算 ex) 4(0100) & 5(0101) = 4(0100)
| a | b aのbをor計算 ex) 4(0100) | 5(0101) = 5(0101)
^ a ^ b aとbをxor計算 ex) 4(0100) ^ 5(0101) = 1(0001)
論理演算子
&& a && b AND演算子、つまりaとbがブール値に定義していてtrue && trueならtrue、true && falseならfalseの値を返却
|| a || b OR演算子、つまりaとbがブール値に定義していて true || trueならtrue、true || fasleならtrueの値を返却
代入演算子
+= a += b a = a + b;と同じ意味
-= a -= b a = a - b;と同じ意味
*= a *= b a = a * b;と同じ意味
/= a /= b a = a / b;と同じ意味
%= a %= b a = a % b;と同じ意味
&= a &= b a = a & b;と同じ意味
|= a |= b a = a | b;と同じ意味
^= a ^= b a = a ^ b;と同じ意味
<<= a <<= b a = a << b;と同じ意味
>>= a >>= b a = a >> b;と同じ意味
三元演算子
? a = b == c ? d : e bとcが同じならaの変数にdの値を格納、bとcが違いならeの値を格納

上の算術演算子は一般数学的の演算と同じです。

そして++や--の前位、後位演算子がありますが、その意味は演算が終わって増加するか減少するかの差異です。

using System;

namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 変数宣言
      int a = 0;
      // 後位増加(cにデータを格納する後に増加) - Debug bは0、aは1
      int b = a++;
      // 前位増加(cにデータを格納する前に増加) - Debug cは2、aは2
      int c = ++a;
      // コンソールに出力
      Console.WriteLine("a = " + a);
      Console.WriteLine("b = " + b);
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


上の例をみれば、bの値には0があります。その意味はaの値は増加する前にaの値がbに格納したのでです。その後でaの値を1に増加しました。

cの値はaの値を増加して格納しました。つまり、aの値が2になってcに格納しました。


関係演算子と論理演算子の場合は結果がブール値に返却します。

そしてビット演算子の場合は整数タイプだけ使えます。

using System;

namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 変数宣言
      int a = 1;
      int b = 2;
      // 1 > 2はfalse
      bool c = a > b;
      // dは2進数で0001を格納
      int d = 0x1;
      // dを左に1程移動、 0010
      int e = d << 1;
      // 0001 OR 0010 = 0011、つまり 3
      int f = d | e;
      // コンソールに出力
      Console.WriteLine("c = " + c);
      Console.WriteLine("e = " + e);
      Console.WriteLine("f = " + f);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


三元演算子は制御の分岐文と似ている処理になっています。

つまり、「条件式?真のデータ:偽のデータ」の値が返却します。

using System;

namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 三元演算子の条件式が真(true)なのでaは1の値が格納
      int a = true ? 1 : 2;
      // 三元演算子の条件式が偽(false)なのでbは2の値が格納
      int b = false ? 1 : 2;
      // 1 > 2はfalseなのでcは2が格納
      int c = 1 > 2 ? 1 : 2;
      // コンソールに出力
      Console.WriteLine("a = " + a);
      Console.WriteLine("b = " + b);
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


ここまでC#の演算子に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。

#C#
最新投稿