講義メモ

・p.050「スペースの入れどころ」から

p.050 スペースの入れどころ

・基本的に単語の途中でなければ空白(半角スペース、Tab、改行)の挿入は自由
・演算子は記号と単語があり、記号のものは前後の空白は任意
 例: a = 1 + 3; a=1+3; //どちらでもOK
・単語である演算子の前後に(前が記号であれば後ろに)空白が必須
 例: x = new Slime(); x=new Slime();  //どちらでもOKだが「x=newSlime」はNG
・(){}[],の前後の空白は任意だが、業務ではルールを決めることが多い
・なお、VSの「書式設定」機能で、あらかじめ業務ルールや好みのルールを設定しておくと便利
 ①「ツール」「オプション」を開く
 ②「テキストエディタ」「C#」「コードスタイル」「書式設定」を開く
 ③「全般」でオートフォーマットをオン/オフにして、それ以降の各項目を調整

p.052 パブリック変数

・パブリック変数はC#の文法であり、プログラムを構成するクラスが持つデータメンバ(変数)を外部に公開し、
 参照や変更を認める仕掛け(変更は制限可能)
・外部から想定外の操作をされてしまう懸念があるので、注意が必要
・Unityでは実行時に実行画面から値を操作できるので、テストなどに便利
・定義位置:classの中でstartなどのメソッドの外(前)
 ※ startなどのメソッドの中で定義するとローカル変数扱いになる
・書式: public 型 変数名;

p.053 Chap1_10_1.cs について

・スクリプトを作成し、保存したら、Unity側でInspectorにTextという入力可能なテキストボックスが表示される
 ※パブリック変数名は「text」だが表示名は自動的に先頭が大文字になる
・テキストボックスに適当な文字列を入力してからプレイするとこれが表示される
・なお、実行中にテキストボックスの内容を変更しても、次回の実行には反映しない(前回の実行前の入力内容に戻される)
・よって、テキストボックスの内容の変更は実行を停止してから行うこと
 ※実行中のプログラムに反映できるが、Start()は実行直後にしか動作しないので意味がない(Update()の内容には反映するが…)

p.053 Chap1_10_1.cs

using UnityEngine;

public class Chap1_10_1 : MonoBehaviour {
    public string text; //文字列型のパブリック変数
    void Start() {
        Debug.Log(text); //パブリック変数の値を表示
    }
}

補足:パブリック変数の型について

・C言語/C++/C#のコマンドラインパラメータも実行時に外部から値を渡すとして知られているが、これらは文字列のみが対象
・対して、Unityのパブリック変数はstring型に限らない
・double型にすると、実数を渡すことが可能で、Inspectorの初期値は自動的に0になる(内部的には0.0)

アレンジ演習:p.053 Chap1_10_1.cs

・double型のパブリック変数rとpiを追加する
・円周率としてpiを用いて、半径rの円の面積を「半径●の円の面積は■」という形式で表示しよう

作成例

using UnityEngine;

public class Chap1_10_1 : MonoBehaviour {
    public string text; //文字列型のパブリック変数
    public double pi, r; //実数型のパブリック変数
    void Start() {
        Debug.Log(text); //パブリック変数の値を表示
        Debug.Log("半径" + r + "の円の面積は" + (pi * r * r));
    }
}

参考:UnityとC#の円周率

・円周率πは利用が多いので、UnityとC#それぞれに実装されている
・Unity;Mathf.PI; float型で単精度(3.141593)
・C#;System.Math.PI; double型で倍精度(3.14159265358979)
 ※なお「using System;」を書いておけば「Math.PI」で良い

ミニ演習:mini055.cs

・double型のパブリック変数で身長と体重を与えるとBMIを表示しよう
・BMIは体重(kg)÷身長(m)÷身長(m)で得られる
・身長はm単位ではなくcm単位で入力できるようにしよう

作成例

using UnityEngine;

public class mini055 : MonoBehaviour {
    public double weight; //実数型のパブリック変数(体重(kg))
    public double height; //実数型のパブリック変数(身長(m))
    void Start() {
        Debug.Log("身長" + height + "cm、体重" + weight + "kgなので");
        Debug.Log("BMIは" + weight / (height / 100) / (height / 100));
    }
}

参考:パブリック変数コメント

・パブリック変数にHeaderコメント機能でInspector表示用の説明文を記述できる
・パブリック変数の宣言の直前に独立した行で下記の書式に記述すると良い
・書式: [Header("説明文")]
・C#の「文」ではないので末尾にセミコロンは不要

ミニ演習:mini055.cs 続き

・パブリック変数コメントを追記しよう

作成例

using UnityEngine;

public class mini055 : MonoBehaviour {
    [Header("体重をkg単位で入力してください")]
    public double weight; //実数型のパブリック変数(体重(kg))
    [Header("身長をcm単位で入力してください")]
    public double height; //実数型のパブリック変数(身長(m))
    void Start() {
        Debug.Log("身長" + height + "cm、体重" + weight + "kgなので");
        Debug.Log("BMIは" + weight / (height / 100) / (height / 100));
    }
}

補足:実数の誤差について

・パブリック変数で実数を渡した場合、内部的に2進数に変換されるため誤差が発生する可能性がある
・UnityのバージョンによってはDebug.Logにおいて誤差をそのまま表示してしまう場合がある(Unity 2022.3など)
・C#では誤差を最小化する方法としてdouble型の上位型としてdecimal型が提供されている。
・decimal型は金額計算などの誤差が許されない計算で用いられるが、メモリ容量が倍になるというデメリットもある
・また、Unityでもdecimal型は利用できるが、パブリック変数の型にすると、
 Inspectorでは表示されなくなる(実質的に使えなくなる)という制限がある

提出:ミニ演習:mini055.cs 続き

今週の話題

ゲームソフト販売本数ランキング:今週1位は「ときめきメモリアル~forever with you~ エモーショナル(Switch)」 GO!
データイーストIPは死なず! 権利を保持するジー・モードの担当者にライセンス事業戦略を訊く。GO!
コナミ新会社「コナミアーケードゲームス」誕生。代表取締役は西村“DJ YOSHITAKA”宜隆氏―果たしてどんな立ち位置に GO!

新作脱出シューター『Marathon』にてデザイン盗用!?Bungieは元スタッフの関与を認め調査 GO!
iOS版『フォートナイト』近日復活と意気込むも…「Appleが審査をブロックしている」Epic Gamesが報告 GO!

前回のコメント

・分かりやすかったです

 何よりです。

・シフトの解説などためになりました。
 なるべく動作の速いプログラムがかけるようになりたいです。

 是非。
 生成AIの急激な進化などで「とりあえず動くプログラム」は簡単にできるようになりつつあります。
 プログラマの腕の見せ所は、そこからで、動作効率、操作性、保守性などをどう高めるかがポイントです。

講義メモ 後半

p.044 変数とは

・英語のvariable value(変わり得る値)の和訳で「変わった数」ではない
・記憶域(メモリ)を必要分確保して名前をつけたもの
・よって、データを格納する器のイメージを持つ
・C#などでは、事前に変数を宣言しておく必要があり、宣言によって確保される
 ※ Python、JavaScriptなどでは宣言不要で初回利用時に確保される
・宣言の書式: データ型 変数名;
・データ型を指定することで「確保すべき大きさ」と「格納するデータの特性」を明示する
・データ型にはstring(p.044:文字列型)、double(p.046:倍精度浮動小数点数(実数)型)、int(p.057:整数型)などがある
・宣言の書式例: string text; //文字列型の変数textの宣言(textが変数名)
・変数に与えるデータを値といい、値を格納することを代入という
・宣言と同時に最初の値(初期値)を代入することを初期化という
・初期化の書式: データ型 変数名 = 値や式;
・なお、この書式の「=」は代入に用いる2項=演算子であり「等しい」という意味はない(元は「←」記号)
 ※ちなみに「等しい」は「==」(2項==演算子)で示す
・初期化の書式例: string text = "ハロー!"; //文字列型の変数textの初期化

p.045 変数を作成してその値を代入する

・タイトルに誤りがあり「変数を初期化してその値を利用する」が正しい
・初期化した変数はそれ以降で利用できる
・例えば、Debug.Log(初期化済の変数名) とすると、変数に格納されている値が表示される
・格納された値は何度でも利用できるのがポイント

アレンジ演習:p.045 Chap1_8_1.cs

・「Debug.Log(text);」をもう1行記述して、同じ値が2度表示されることを確認しよう

作成例

using UnityEngine;

public class Chap1_8_1 : MonoBehaviour {
    void Start() {
        string text = "ハロー!"; //文字列型の変数textの初期化
        Debug.Log(text); //変数textに格納されている値を表示⇒ハロー!
        Debug.Log(text); //変数textに格納されている値を表示⇒ハロー!
    }
}

p.045 変数を使うメリットは?

・初期化には値に加えて式も指定できる
・例: double p = 3.14 * 10 * 10; //半径10の円の面積で初期化
・式には初期化済の変数を利用できる
・例: double pi = 3.14; Debug.Log(pi * 10 * 10); //半径10の円の面積を表示
・よって、初期化にも初期化済の変数を用いる式を指定できる
・doubleは倍精度浮動小数点数の「倍」が由来で、64ビット分の誤差が小さい実数を扱える
・よって、double型の変数の初期化では実数値を指定できるが、整数値も指定可能で、自動的に実数に変換されてから格納される
 ※このことを暗黙の型変換という
・例: double kakaku = 100; //100.0に自動変換されて初期化
・初期化においては基本的にその型の値を用い、暗黙の型変換もできない場合、文法エラーになる
・エラーの例: double kakaku = "ハロー!"; //文字列によるdouble型変数の初期化は不可

アレンジ演習:p.046 Chap1_6_2.cs

・エラーの例「double text = "ハロー!";」を追記してどういうエラーになるか確認しよう
・確認後「//」を前置してコメントにすること(コメントアウトという)

作成例

using UnityEngine;

public class Chap1_8_2 : MonoBehaviour {
    void Start() {
        double kakaku = 100; //100.0に自動変換されて初期化
        double urine = kakaku * 1.08; //100.0×1.08→108.0で初期化
        Debug.Log(urine); //変数urineに格納されている値を表示⇒108と表示
        //double text = "ハロー!"; //文字列によるdouble型変数の初期化は不可
    }
}

p.045 変数を使うメリットは?:続き

・内部で用いる値が将来変更される可能性があったり、その値を複数回用いる場合、リテラルではなく、変数に格納して用いると良い
・例えば、消費税計算を毎回「* 1.1」とする代わりに「* tax」としておき、冒頭で変数taxを税率で初期化すれば、
 保守性が高い(変更・改良しやすい)プログラムになる
・例:
 double tax = 1.1; //税率が変わったらここだけ変更でOK
 double book = 1000, magazine = 800; //それぞれの価格を初期化
 Debug.Log(book * tax); //税率が変わっても変更不要
 Debug.Log(magazine * tax); //税率が変わっても変更不要

参考:VSによるインデントの一括修正機能

・Ctrlを押しながらA、K、Dの順に押すと指定してあるルールによって、ソースのインデントが一括修正される
・なお、先行する全角空白がある場合、削除してくれる
・他者にソースを見せる前に行うと良い

アレンジ演習:p.047 Chap1_8_3.cs

・上記の例を追記して確認しよう

作成例

using UnityEngine;

public class Chap1_8_3 : MonoBehaviour {
    void Start() {
        double kakaku = 150; //150.0に自動変換されて初期化
        double urine = kakaku * 1.08; //150.0×1.08→162.0で初期化
        Debug.Log(urine); //変数urineに格納されている値を表示⇒162と表示

        double tax = 1.1; //税率が変わったらここだけ変更でOK
        double book = 1000, magazine = 800; //それぞれの価格を初期化
        Debug.Log(book * tax); //税率が変わっても変更不要
        Debug.Log(magazine * tax); //税率が変わっても変更不要
    }
}

参考:文字列型変数と実数

・文字列型変数を実数値で初期化するとエラーになる
・例:string text = 3.14; //エラーになる
・なお、実数値をダブルクォーテーションで囲んで文字列にすればエラーにならない
・例:string text = "3.14"; //エラーにならない
・ただし、この変数は実数演算の式には使えない
・例:double s = 100 * text; //エラーになる

p.048 変数の命名ルールを覚えよう

・C#における変数の命名ルール
① 英大文字、英小文字、数字、「_」、2バイト文字が利用可能
 ※ つまり他言語では使える記号(「-」「$」「@」など)はC#では利用不可
② ただし、先頭には数字は利用不可(よって数字のみも不可)
③ 予約語と完全に同じ名は利用不可
 例:using、public、class、void、double、string など

p.048 変数の命名ルールを覚えよう:補足

・文法エラーにははならないが、変数名の命名で推奨されるルールがある
 ※実務ではルールが決められることが多い
① 予約語と同じつづりで大文字を混ぜた名前は避ける
 例:Using、Public、Class など
② 2バイト文字は避ける(誤読しやすい)
③ 1文字の大文字は避ける(誤読しやすい)
④ 先頭に「_」は避ける(「_」を推奨しない場合もある)
⑤ 長過ぎたり誤解を招く変数名は避ける

提出:アレンジ演習:p.047 Chap1_8_3.cs

講義メモ

・p.039「演算子の優先順位一覧」から

p.039 演算子の優先順位一覧

・演算子の優先順位は丸暗記する必要はないが、想定外の優先順位になる可能性を把握しておこう
・優先順位の影響がありそうな(左から右へ進まないような)式ではカッコをつけてそのことを明示するか表記を工夫すると良い
 ※実務ではルールが決められることが多い
 例:a + b * c - d ⇒ a + (b * c) - d ⇒ b * c + a - d

アレンジ演習:p.040,041 Chap1_7_2.cs + Chap1_7_2.cs

・2つ合わせてChap1_7_2.csとして実行し確認しよう
・また、以下の式を追加して、結果を確認しよう
 3 / 2.0 - 1.0
 3 / 2 - 1.0

作成例

using UnityEngine;

public class Chap1_7_2 : MonoBehaviour {
    void Start() {
        Debug.Log(2 + 10 + 5); //整数2,10,5の整数加算結果17を得て表示
        Debug.Log(2 + 10 * 5); //整数10と5の整数積50と整数2の整数和52
        Debug.Log(3 / 2.0 - 1.0); //3÷2.0の実数商1.5から-1.0で0.5
        Debug.Log(3 / 2 - 1.0); //3÷2の整数商1から実数-1.0で0.0(表示は0)
    }
}

p.042 カッコを使って計算順を変える:補足

・優先順位を誤解しやすい演算子にシフト演算子がある
・シフト演算は値を2進数として扱ってビット単位で左右にずらす仕掛けで、動作が非常に高速なこと、
 2のべき乗の乗除算を代用できることから、活用されやすい
・例えば、1ビット左シフトすると2倍になる
 ① 10進数5は内部では2進数の00000101
 ② 1ビット左シフトすると   00001010 となり、これは10進数の10
・例えば、2ビット右シフトすると1/4になる
 ① 10進数28は内部では2進数の00011100
 ② 2ビット右シフトすると    00000111 となり、これは10進数の7
・便利だが、加減乗除より優先順位が低いので注意。カッコをつけることを推奨
 例: 28 ÷ 4 + 10 ⇒ (28 >> 2) + 10

アレンジ演習:p.042 Chap1_7_3.cs

・以下の式を追加して、結果を確認しよう
 (28 >> 2) + 10
 28 >> 2 + 10

作成例

using UnityEngine;

public class Chap1_7_3 : MonoBehaviour {
    void Start() {
        Debug.Log((2 + 10) * 5); //整数2と10の整数和と5の整数積⇒60
        Debug.Log((28 >> 2) + 10); //28を右2シフト(1/4)して10を加算⇒17
        Debug.Log(28 >> 2 + 10); //28を右(2+10)シフト(1/2の12乗)⇒0
    }
}

p.042 カッコの中にカッコが入れ子になった式

・ある構造の中に同じ構造があることを「入れ子」という
・C#では、()による入れ子に加えて、{}や[]による入れ子の構造が無制限に利用可
・ただし、読みづらくなることが多いので後述の変数などを用いて、入れ子の数を少なめにすることが望ましい
※ Chap1_7_4.csではカッコの前後の空白の有無が乱れており、開けるか開けないかを決めておくと良い
(実務ではルールが決められることが多い)
 例: Debug.Log( 5 / ( 4 * ( 1 - 0.2 ) ) ); //すべて開ける
 例: Debug.Log(5 / (4 * (1 - 0.2))); //演算子の前後のみ開ける

p.043 負の数を表す「-」

・数学では負の数を表す「-」は、C#では単項-演算子と呼ばれる演算子
・単項-演算子は「1つのデータを得て、符号を反転した結果を返す」もの
・よって「-5」なども1つの計算式で「整数5の符号を反転した結果の整数-5を返す」
・計算式なので、入れ子構造も可能で「-(-5)」とすると
 「整数5の符号を反転した結果の整数-5の、符号を反転した結果の整数5を返す」
・このことは変数の値の符号を反転することに関わるので重要
・なお、単項-演算子の優先順位は加減乗除より高い
・ちなみに、単項+演算子もあるが意味は「1つのデータを得て、その値を返す」で「+5」も1つの計算式
・また、引き算の「-」は2つのデータを扱うので2項-演算子と呼ばれ、単項-演算子とは異なる演算子

アレンジ演習:p.042,043 Chap1_7_4.cs + Chap1_7_5.cs

・2つ合わせてChap1_7_5.csとして実行し確認しよう
・また、以下の式を追加して、結果を確認しよう
 -(-5)
 -(2 - 10)

作成例

using UnityEngine;

public class Chap1_7_5 : MonoBehaviour {
    void Start() {
        Debug.Log(5 / (4 * (1 - 0.2))); //⇒1.5625
        Debug.Log(2 + 10 * -5); //5の符号を反転し10との積を2に加算⇒-48
        Debug.Log(-(-5)); //5の符号を反転した結果の符号を反転⇒5
        Debug.Log(-(2 - 10)); //2から10減算した結果の符号を反転⇒8
    }
}

今週の話題

ゲームソフト販売本数ランキング:今週1位は「『OVER REQUIEMZ』(オーバーレクイエムズ:Switch)」※未更新 GO!
Nintendo Switch 2の26年度販売予想は1500万台、ソフトは4500万本。任天堂決算資料で明らかに GO!
フロム・ソフトウェアイベントはファンの愛に満ちた空間。歴代アート展示にコスプレ、クイズ大会と企画満載。幕間には『A.C.E.』などの映像も。“FROMSOFTWARE GAMES EVENT Spring 2025 in TOKYO”リポート GO!
対戦型音楽ゲーム『Heavenly Guitars』PC版リリース、ソニーのブロックチェーン「Soneium」と連携 GO!
生成AI活用の『神魔狩りのツクヨミ』がついにリリース―目指すは「中ヒットでも継続できる」ゲーム GO!

トランプ関税により米国内でのゲーム機の価格が約70%上がる可能性―全米民生技術協会が報告書を発表 GO!
ポケットペア、任天堂とポケモンの『パルワールド』訴訟について現状説明―予防的な措置として一部仕様変更も GO!
米国では16歳未満は親同意なしの『原神』ガチャ禁止に。アメリカ連邦取引委員会の訴訟の波紋は GO!

講義メモ 後半

p.037 整数と実数:補足

・コンピュータでは整数と実数は扱いが異なるので、厳密に区別されることが多い
・例えば、C系言語では「0」と「0.0」は扱いが異なる
・記憶域においては整数は「完全にその値」が格納されるが、実数は「できる限り近い値」が格納される
・ただし、言語や機能によって、見かけ以上、実数も「完全にその値」が格納されているように見せることが多い
・例:10進数の0.1は2進数にすると0.001100110011…と無限循環小数なので、記憶域の大きさの限りまで格納され、続きは切り捨てられる
 ⇒10進数に戻すと0.1未満になるが、言語や機能によって「0.1」と表されることが多い
・言語や機能や場面によっては0.1ではなく0.09999999998などになり、誤差を生ずる

p.037 整数と実数

・C#では-2,147,483,648から2,147,483,647の値を数字列で書くと(int型)整数リテラルとみなされる
・これは記憶域の大きさで32ビット分を示す
・リテラルとはプログラムの中にデータを記述したもの
・なお「"ハロー!"」は文字列リテラルであり、0文字以上の文字を""で挟んだもの。
 これは記憶域の大きさが不定なので、整数リテラルとは扱われかたが異なる
・先頭または途中に1個だけ「.」を含む数字列は(double型)実数リテラルとみなされる
・2項+演算子は2つのオペランドの両方が実数、又は実数と整数とみなされる場合、実数加算を行い、実数整数を返す
 例: 3.14 + 2.1 ⇒ 5.24、3 + 1.2 ⇒ 4.2、2.1 + 0.9 ⇒ 3.0
・2項-演算子、2項*演算子、2項/演算子も同様
・ただし、この時、右オペランドが実数0.0や実数0.0になる式の場合、文法エラーにはならず、∞が返される
 後述の変数を用いる式で実数0.0になる場合、実行時エラーにはならず、処理が続行される
・UnityのDebug.Logは実数の小数点以下が「.0」の場合に省略するので見かけ上、整数になるが演算は実数を返している
・また、∞を「Infinity」と表示する(負の数を0.0で割った場合(-∞)は-Infinity)

p.037 Chap1_6_3.cs

using UnityEngine;

public class Chap1_6_3 : MonoBehaviour {
    void Start() {
        Debug.Log(2 + 0.5); //整数2と実数0.5の実数加算結果を得て表示
    }
}

アレンジ演習:p.037 Chap1_6_3.cs

・以下を追記して試そう
 3.14 - 2.1 ⇒ 1.04
 3 * 1.2 ⇒ 3.6
 3.5 * 2 ⇒ 7(実数7.0だが「.0」は省略される)
 1 / 7 ⇒ 0(小数点以下切り捨てで整数になる)
 1 / 7.0 ⇒ 0.142857142857143(誤差が出る)
 1.0 / 0 ⇒ Infinity(∞)
 -3 / 0.0 ⇒ -Infinity(-∞) 

作成例

using UnityEngine;

public class Chap1_6_3 : MonoBehaviour {
    void Start() {
        Debug.Log(2 + 0.5); //整数2と実数0.5の実数加算結果を得て表示
        Debug.Log(3.14 - 2.1); // ⇒ 1.04
        Debug.Log(3 * 1.2); // ⇒ 3.6
        Debug.Log(3.5 * 2); // ⇒ 7(実数7.0だが「.0」は省略される)
        Debug.Log(1 / 7); // ⇒ 0(小数点以下切り捨てで整数になる)
        Debug.Log(1 / 7.0); // ⇒ 0.142857142857143(誤差が出る)
        Debug.Log(1.0 / 0); // ⇒ Infinity(∞)
        Debug.Log(-3 / 0.0); // ⇒ -Infinity(-∞) 
    }
}

p.037 整数と実数:補足その2

・整数リテラルでプラスマイナス2の31乗の範囲の外の値を扱うには、長整数リテラルを用いる
・長整数リテラルは数字列の末尾に「L」または「l」をつけたもの(Longの略)
 ※見間違いを起こしやすいので「l」は推奨されないことが多い
・例:2200000000L
・これは記憶域の大きさで64ビット分を示す
・実数リテラルで精度を半分にする代わりに記憶域の大きさを半分にするには、単精度実数リテラルを用いる
・単精度実数リテラルは数字列の末尾に「F」または「f」をつけたもの(Floatの略)
・これは記憶域の大きさで32ビット分を示す
・例:3.14F
・なお、通常の実数リテラルは記憶域の大きさで64ビット分を示す(倍精度実数)
・Unityでは実数計算の結果を整数にすることが多いので(例:座標)大量の実数を誤差をあまり気にせずに効率よく扱うため、
 単精度実数にすることが多い。
・ちなみに、コンピュータは内部的にint型整数、倍精度実数が基本なので、特に必要がなければ、これらを用いる方が効率は上がる

アレンジ演習:p.037 Chap1_6_3.cs

・以下を追記して試そう
・整数リテラル2200000000をDebug.Logで表示できるか試そう
・長整数リテラルが2200000000LをDebug.Logで表示できるか試そう
・倍精度実数3.141592653589793238がどう表示されるか試そう
・単精度実数3.141592653589793238Fがどう表示されるか試そう

作成例

using UnityEngine;

public class Chap1_6_3 : MonoBehaviour {
    void Start() {
        Debug.Log(2 + 0.5); //整数2と実数0.5の実数加算結果を得て表示
        Debug.Log(3.14 - 2.1); // ⇒ 1.04
        Debug.Log(3 * 1.2); // ⇒ 3.6
        Debug.Log(3.5 * 2); // ⇒ 7(実数7.0だが「.0」は省略される)
        Debug.Log(1 / 7); // ⇒ 0(小数点以下切り捨てで整数になる)
        Debug.Log(1 / 7.0); // ⇒ 0.142857142857143(誤差が出る)
        Debug.Log(1.0 / 0); // ⇒ Infinity(∞)
        Debug.Log(-3 / 0.0); // ⇒ -Infinity(-∞) 
        Debug.Log(2200000000); //長整数リテラルだがL無でもエラーにならない
        Debug.Log(2200000000L); //長整数リテラルなのでLをつける方が良い
        Debug.Log(3.141592653589793238); //3.14159265358979になる
        Debug.Log(3.141592653589793238F); //3.141593になる
    }
}

p.38 長い式では計算する順番を意識する

・一般的に四則演算を連続で行う場合のルールは下記の通りで、C#でも同じ
 ①左から順に行う
 ②ただし、積算と除算は加算と減算より優先して行う
・これに整数演算か実数演算かも関連するので、どこまでが整数演算になるのかもポイント
・例: 1 + 2 + 2.1 + 3 
 ① 1 + 2 まで整数演算で整数3になり
 ② 3 + 2.1 となって続行され実数演算で5.1になり
 ③ 5.1 + 3 となって続行され実数演算で8.1になる
・例: 2.9 + 2.1 + 3 
 ① 2.9 + 2.1 まで実数演算で実数5.0になり
 ② 5.0 + 3 の実数演算で実数8.0になる(整数8にはならない)

提出:アレンジ演習:p.037 Chap1_6_3.cs(どのバージョンでもOK)