講義メモ 後半

p.94 代入演算子:複合代入演算子

・2項=演算子を代入演算子といい、基本的に左辺が変数であることが特徴
・インクリメント演算子と同様に「変数に●を加算する」ような処理は頻出なので、複合代入演算子が提供されている
・複合代入演算子とは「変数 = 変数 演算子 式や値」を「変数 演算子= 式や値」と略記できる仕組み
・例: a = a + 2 ⇒ a += 2 //aに2を足しこむ
・例: a = a - 2 ⇒ a -= 2 //aから2を差し引く
・ちなみに、「++a」は「a += 1」と同じ結果になる
・複合代入演算子としては、算術演算の+=、-=、*=、/=、%=に加えて、論理演算の&=、|=、^=と、シフト演算の<<=、>>=が提供されている

ミニ演習 mini095.cs

・コンソールから西暦4桁を入力すると、下2桁にしてから、表示するようにしよう
 例: 1962 ⇒ 62にする
・入力した変数の値を複合代入演算子で操作すること

作成例

//ミニ演習 mini095.cs
using System;
class mini088a
{
    public static void Main()
    {
        Console.Write("西暦4桁 : ");
        int a = int.Parse(Console.ReadLine());
        a %= 100; //aを100で割った余りにする=下2桁にする
        Console.WriteLine("西暦下2桁 : " + a);
   }
}

p.95 代入演算子:暗黙の型変換

・扱える範囲が広い型のことを「大きい型」といい、扱える範囲がこの範囲内に収まる型は「小さい型」という
・大きい型の変数に小さい型の式や値を代入すると、代入前に大きい型への変換が自動的に行われる
・このことを暗黙の型変換(拡大変換)という
 例: int i = 10; long j = i; //iの値10をlong型に暗黙の型変換する
・ただし、decimal型への暗黙の型変換はできるが、decimal型からの暗黙の型変換はエラーになる
・また、byte型とsbyte型は、両方向共に変換できないので、キャストを用いる必要がある

アレンジ演習:p.96 convert01.cs

・byte型とsbyte型は、両方向共に変換できないが、キャストを用いると可能なことを確認しよう

作成例

//p.96 convert01.cs
using System;
class convert01
{
    public static void Main()
    {
        byte a = 10;
        sbyte b;
        ushort c;
        short d;
        uint e;
        int f;
        ulong g;
        long h;
        float i;
        double j;
        decimal k;
        b = (sbyte)a; //byteをsbyteには変換できないがキャストすれば可能
        b = 10;
        a = (byte)b; //sbyteをbyteには変換できないがキャストすれば可能
        c = a;
        d = a;
        e = a;
        f = a;
        g = a;
        h = a;
        i = a;
        j = a;
        k = a;
    }
}

p.97 演算子の優先順位

・加減算よりも乗除算が優先されるように、C#によって演算子の優先順位が定められている
 ※代入演算子が最下位であること以外は丸暗記は不用
・なお、演算子の優先順位に依存するプログラミングは避けるべきで、できるだけ左から順に計算されるように書き換えておくか、
 カッコで優先順位を示すと良い
 例: a + b * c ⇒ b * c + a あるいは a + (b * c)
・なお、演算順序を変える場合、途中での型変換が変わる場合があるので注意
・表4.3の優先順位にある「.」「f(x)」「a[x]」「new」などは後述

p.98 演算子の結合規則

・同じ優先度の演算子が複数並んで用いられる場合、評価は左から順に行う。これを左結合という。
・多くの演算子は左結合だが、逆に右から行う右結合もあるので注意
・その代表例が代入演算子で、右結合を活かすと「a = b = c = 10」のような連続同値代入ができる。
・実は、この式は下記のように評価される
 ① a = b = (c = 10) //変数cに10が代入され評価は代入値の10
 ② a = (b = 10) //変数bに10が代入され評価は代入値の10
 ③ a = 10
・ただし、a、b、cの型が異なる場合、途中で起こる型変換の影響に注意すること

ミニ演習 mini098.cs

・double型の変数a、cと、int型の変数bがあるとき、下記の実行後の値に差が出るか確認しよう
① a = b = c = 3.14;
② a = c = b = 3.14;
※ 必要に応じてキャストを行うこと

提出:ミニ演習 mini098.cs

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です