前回のコメント

・変わらない値は定数にした方がいいことがわかりました。

 はい、変数に比べると必要性は低く見えますが、プログラムの可読性や保守性(改良しやすさ)に
 大きく貢献しますので、業務においては重要度が増します。

・条件演算子の説明わかりやすかったです、使えるタイミングでは積極的に使用したいです。

 何よりです。是非、活用してみてください。

講義メモ:Chapter 3 繰り返し文を学ぼう

p.098 繰り返し文

・ループともいう
・回数指定、条件指定(前判定)、条件指定(後判定)、全要素の4パターンがある

p.098 繰り返しのフローチャート:補足

・p.098右下のフローチャートは、正しくは「上向き矢印は不要」で、上向き六角形で「ループ開始」を、
 下向き六角形で「ループ終了」を表す。
・p.099中央左のフローチャートも同様に「上向き矢印は不要」。なお、上向き六角形で二重ループを表す際は、
 通常、ループ名を記載して識別する
・p.099中央右のフローチャートも同様に「上向き矢印は不要」。なお、条件によって繰り返しを脱出する構文もあるが、
 通常は条件分岐の後の合流はループ内で行う

p.100 while文

・if文と似た構文で分岐条件の代わりに繰り返しの継続条件を記述する記法
・書式: while (継続条件) { 繰り返し内容 }
・継続条件がtrueである間繰り返すので「●●である間、繰り返す(最初から●●でなければ1度も繰り返さない)」場合に便利
 ※「●●になるまで、繰り返す」ではないので注意

アレンジ演習:p.101 Chap3_2_1

・変数shikinをパブリック変数にして、値を変えて試せるようにしよう

作成例

//アレンジ演習:p.101 Chap3_2_1
using UnityEngine;
public class chap3_2_1 : MonoBehaviour {
    public int shikin = 30000; //【移動】パブリック変数に
    void Start() {
        while (shikin >= 0) { //資金がある間、繰り返す
            Debug.Log(shikin);
            shikin = shikin - 5080; //資金から5080を差し引く
        }
    }
}

アレンジ演習:p.101 Chap3_2_1 つづき

・繰り返し終了後の資金の値を表示しよう
・これでは赤字になってしまうので、資金が5080を下回ったら繰り返さないようにしよう

作成例

//アレンジ演習:p.101 Chap3_2_1
using UnityEngine;
public class chap3_2_1 : MonoBehaviour {
    public int shikin = 30000; //【移動】パブリック変数に
    void Start() {
        while (shikin >= 5080) { //【変更】資金が5080以上ある間、繰り返す
            Debug.Log(shikin);
            shikin = shikin - 5080; //資金から5080を差し引く
        }
        Debug.Log("終了時の資金は" + shikin); //【追加】
    }
}

補足:定数

・「アレンジ演習:p.101 Chap3_2_1 つづき」では、毎回の差引額(単金)の5080が複数回記述されており、
 変更発生時にミスの原因になりやすい
・そこで「5080」を変数に格納して名前(例:unit)を与えて用いると良い
・この時、プログラム内部のミスなどでこの変数の値を変更してしまわない為に、定数にすると便利。
・定義書式: const 型 定数名 = 初期値; //値を変更できないので必ず初期化すること
・これにより、定数名は「値を示す名前」になり、プログラム中に整数値がそのまま記述されて意味が分かりづらくなる
 (マジックナンバー化する)ことを避けられる

アレンジ演習:p.101 Chap3_2_1 つづき

・5080をint型の定数unitで扱うようにしよう

作成例

//アレンジ演習:p.101 Chap3_2_1
using UnityEngine;
public class chap3_2_1 : MonoBehaviour {
    public int shikin = 30000; //【移動】パブリック変数に
    const int unit = 5080; //【追加】単金を表す定数の定義
    void Start() {
        while (shikin >= unit) { //【変更】資金が単金以上ある間、繰り返す
            Debug.Log(shikin);
            shikin = shikin - unit; //【変更】資金から単金を差し引く
        }
        Debug.Log("終了時の資金は" + shikin); //【追加】
    }
}

p.103 変数から少しずつ引く式を理解する

・2項=演算子は「代入」なので、右辺に左辺の変数値を用いることが可能
・これにより、変数の値を元の値を基に変更するような式を記述できる
 例: shikin = shikin - 5080;
 ⇒ 変数shikinの値を得て5080を引いた結果を変数shikinに代入
 ⇒ 変数shikinから5080を差し引く
・他の演算子でも可能で、例えば、西暦4桁を下2桁にするのであれば「y = y % 100;」とすれば良い

p.103 計算もできる代入演算子:複合代入演算子

・多くの2項演算子において、右辺に左辺の変数が含まれる場合の省略記法として複合代入演算子が用意されている
・その1つが「-=」で「変数 = 変数 - 値」を「変数 -= 値」と記述でき「変数から値を差し引く」を表現できる
 例: shikin = shikin - 5080; ⇒ shikin -= 5080;
・他に「足しこむ」の意味になる「+=」や、「*=」「/=」「%=」「&=」「|=」「^=」「<<=」「>>=」が提供されている
・ただし「+=」「-=」以外は日本語表現とマッチしづらいので乱用は避ける方が良い場合もある。
 例えば、西暦4桁を下2桁にするのであれば「y %= 100;」とできるが、やや難読。
・また、他の計算と混ぜると可読性が落ちるので注意
 例: a += b * a / c; ⇒ a = a + (b * a / c);と記述すると誤読を避けやすい

アレンジ演習:p.101 Chap3_2_1 つづき

・複合代入演算子を利用しよう

作成例

//アレンジ演習:p.101 Chap3_2_1
using UnityEngine;
public class chap3_2_1 : MonoBehaviour {
    public int shikin = 30000; //【移動】パブリック変数に
    const int unit = 5080; //【追加】単金を表す定数の定義
    void Start() {
        while (shikin >= unit) { //【変更】資金が単金以上ある間、繰り返す
            Debug.Log(shikin);
            shikin -= unit; //【変更】資金から単金を差し引く
        }
        Debug.Log("終了時の資金は" + shikin); //【追加】
    }
}

p.104 for文

・while文で定型的に行われる回数を指定した繰り返しを簡略に表現できるのがfor文
・よって、for文で書ける繰り返しは全てwhile文でも記述できる
・「何回かわからないが、条件が成立する間繰り返す」時はwhileを、「●回繰り返す」時はforを用いると良い
例:(whileで5回繰り返す場合)
 int counter = 0; //①(カウンタの)初期化
 while (counter < 5) { //② 継続条件
  繰り返し内容
  counter += 1; //③(カウンタの)カウントアップ(※「最終式」ともいう)
 }
例:(上記をforにすると)
 for (int counter = 0; counter < 5; counter += 1) { //①②③をまとめられる
  繰り返し内容
 }
・つまり、for文の書式はwhile(②)に①と③を加えたものになっている
・書式: for(繰り返し前に1度だけ行う処理; 継続条件; 繰り返しの末尾で毎回行う処理) {繰り返し内容}

p.105 インクリメント演算子

・複合代入演算子で1を足しこむ処理はカウントアップなどで多用されるので、専用の単項++演算子が提供されており、
 インクリメント演算子と言われる
・「変数 += 1」は「変数++」または「++変数」と記述できる
・for文のカウントアップのように、1を足しこむ処理を単独で行うのであれば「変数++」「++変数」のどちらでも良い
 ※一般的にfor文では「変数++」を用いることが多い(チームルールで決めることもある)
例:(インクリメント演算子を用いると)
 for (int counter = 0; counter < 5; counter++) { //①②③をまとめられる
  繰り返し内容
 }

アレンジ演習:p.105 Chap3_3_1

・「ハロー」の表示回数(5)をパブリック変数で指定できるようにしよう

提出:アレンジ演習:p.105 Chap3_3_1

講義メモ

・p.092「エラーメッセージを読み解こう②」から再開して、Chapter3に進みます

提出:アレンジ演習:p.091 Chap2_7_3

・「9」をパブリック変数で与えるようにしよう
・変数値を用いて「●は2のべき乗ではない」と表示するようにしよう
・パブリック変数が負の数の場合の動作を確認しよう
 ⇒負の数は(絶対値が2のべき乗であっても)2のべき乗ではない

作成例

//アレンジ演習:p.089 Chap2_7_2
using UnityEngine;
public class Chap2_7_3 : MonoBehaviour
{
    public int n = 9;
    void Start() {
        if(!Mathf.IsPowerOfTwo(n)) { //nが2のべき乗ではない?
            Debug.Log("2のべき乗ではない"); 
        }
    }
}

p.092 エラーメッセージを読み解こう②

・中カッコ{}などのペアになっている記号のアンマッチによるエラーは、真の原因である場所にはエラー表示がされないことが多い
・中カッコ{}については、Visual Studioの自動インデントを活かすことで確認可能
・Ctrl+A,K,D でデフォルト設定になるので、事前に設定を見直すと良い。
・「ツール」「オプション」で「テキストエディタ」「C#」「コードスタイル」「書式設定」の中

p.094 復習ドリル Chap2_9_1.cs 作成例

using UnityEngine;
public class Chap2_9_1 : MonoBehaviour {
    public int age;
    void Start() {
        if (age < 6) {
            Debug.Log("幼児");
        }
    }
}

p.094 復習ドリル Chap2_9_2.cs 作成例

using UnityEngine;
public class Chap2_9_2 : MonoBehaviour {
    public int age;
    void Start() {
        if (age <= 5 || age >= 65) { //【修正】&&⇒||
            Debug.Log("幼児と高齢者");
        }
    }
}

p.095 正誤:if文で「空(から)」かどうかチェックする

・これはC/C++の説明になっており、C#では文法エラーになる
・空の文字列かどうかの比較は「変数名 == ""」などとする
・なお、C#ではif文に真偽値を返す式以外を渡すことはできない。数値を真偽値の代わりに用いることもできない。
 空の文字列でfalseを表すこともない。

補足:条件演算子

・p.039「演算子の優先順位一覧」の下から2行目にある「条件」は条件演算子で、C#では唯一の3項演算子。
・書式: bool型の値または式 ? 式がtrueの場合の値または式 : 式がfalseの場合の値または式
・なお、可読性を上げる目的で「bool型の値または式」をカッコで囲むことが多い
・例: string s; s = (a > b) ? "aはbより大" : "aはb以下";
・例: Debug.Log((a > b) ? "aはbより大" : "aはb以下");
・よって、なんらかの値を返すことが目的のシンプルなif-else構文は条件演算子にすると、短い行数で見やすく記述できることがある
・ただし、if文とは異なり、elseにあたる「式がfalseの場合の値または式」は必須
・例: Debug.Log((a > b) ? "aはbより大" : ""); //無文字列を返すと良い

ミニ演習 mini093a.cs

・p.081 Chap2_5_1 を条件演算子で記述しよう

作成例

using UnityEngine;
public class mini093a : MonoBehaviour {
    public int age;
    void Start() {
        Debug.Log((age < 20) ? "未成年" : "成人"); //条件によって表示
    }
}

ミニ演習 mini093b.cs

・int型のパブリック変数a、bの差を表示しよう
・なお、差とは「大きい方から小さい方を引いた値」とする
・また、2つの値の大きい方と、小さい方を表示しよう
・例:「差は▼で、大きい方は●で、小さい方は■」

作成例

using UnityEngine;
public class mini093b : MonoBehaviour {
    public int a, b;
    void Start() {
        int max = (a > b) ? a : b, min = (a < b) ? a : b;
        Debug.Log("差は" + (max - min) + "、大きい方は" + max + "、小さい方は" + min);
    }
}

ミニ演習 mini093d.cs

・int型のパブリック変数a、b、cの最大値を条件演算子で表示しよう

作成例

using UnityEngine;
public class mini093d : MonoBehaviour {
    public int a, b, c;
    void Start() {
        int w = (a > b) ? a : b; //まずaとbの大きい方をwとする
        Debug.Log("最大値は" + ((w > c) ? w : c)); //wとcの大きい方が最大値
        //上記を1行にできる
        Debug.Log("最大値は" + ((a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c)));
    }
}

今週の話題

ゲームソフト販売本数ランキング:今週1位も「マリオカート ワールド(Switch2)」 GO!
「コンテンツ東京2025」が7月2日~4日開催・・・6大専門展+新エリア「CONTENT Hub」でビジネスを加速 GO!
「最もプレイされたゲーム」上位の『Bongo Cat』人気なのに赤字。存在意義は“別にある” GO!
静止画から高精細な3Dモデル生成できる注目技術「Sparc3D」に異変。オープンソースではなく商用化に舵切ったHitem3Dでどう変わるのか? GO!

『フォートナイト』訴訟されるも無視を決め込んだチーターに約2,500万円の損害賠償。規約違反者にEpicは容赦なし GO!

前回のコメント

・いろいろな構文や論理演算子などを用いた表現方法が学べて良かったです。
・比較式の組み合わせが複雑だけど面白かったです。

 何よりです。
 論理演算子や比較式は多くのプログラミング言語で(ほぼ)共通に使われていますので、
 しっかり理解しておくと「使いまわし」が効きますね。

講義メモ 後半

p.088 複数の比較式を組み合わせる:論理演算子(2項||演算子)

・2項||演算子:左辺と右辺がbool型の時、どちらか片方か両方がtrueならtrueを、でなければfalseを返す
・つまり、どちらもfalseなfalseを、でなければtrueを返すので、2項&&演算子の逆の忌になる
・よって「オア」「または」とも呼ばれる
・ifの条件式に用いると「if(条件① || 条件②) { ①②の片方か両方がtrueの時の処理 }」とできるので、2条件の「または」に該当する
・なお、この場合、①②が共にfalseの場合、実行されない
・よって、2項||演算子は値の範囲外チェックに便利:
 「if(変数 < 下限 || 変数 > 上限) { 変数の値が範囲外の時の処理 }」
・ただし、条件①と②が同時に成立する場合、想定外の動作になることに注意
 例: if(a > 0 || a < 10) {ここは常に実行される}

アレンジ演習:p.090 Chap2_7_2

・ageが負の数の場合は「負の数は対象外」と表示しよう
 ⇒先にチェックしないと「幼児」になってしまうので注意

作成例

//アレンジ演習:p.089 Chap2_7_2
using UnityEngine;
public class Chap2_7_2 : MonoBehaviour
{
    public int age;
    void Start() {
        if(age < 0) { //ageの値が0未満?
            Debug.Log("負の数は対象外"); 
        } else if(age <= 5 || age >= 65) { //ではなくてageの値が5以下または65以下?
            Debug.Log("幼児と高齢者");
        }
    }
}

補足:複数の2項||演算子

・2つ以上の2項||演算子を並べて3つ以上の条件式を記述できる
 例: if (a == 0 || b == 0 || c == 0) {a,b,cどれかが0の場合の処理}
・なお、このような記述をすると、最初の方の条件式がtrueになると、後続の条件式は
 (trueになってもfalseになっても全体はtrue確定なので)評価されず、誤りが発見されづらいので注意
・つまり、2項&&演算子と同様に短絡評価が起こる
・2項&&演算子の安全性の向上の例と同様のことができる
 例: if (a == 0 || 5 / a > 2) {…} //aが0か、または、5/aが2超?

補足:2項&&演算子と2項||演算子の併用と優先度

・2項&&演算子と2項||演算子の併用が可能だが、2項&&演算子が優先なので注意
・例: if (a == 0 || b == 0 && c == 0) //先にbとcが共に0かを評価
 ※チームルールによってはカッコをつけることを義務とする場合がある
 例: if (a == 0 || (b == 0 && c == 0)) //先にbとcが共に0かを評価

p.088 論理演算子(単項!演算子)

・右辺がbool型であれば、その値をtrue⇔false反転した結果を返す
 ※変数値を書き換えるわけではないので注意(書き換えるには代入が必要)
 例: bool a = true, b = !a; //bはfalseになるが、aはtrueのまま
 例: bool a = true; a = !a; //aはtrueからfalseになる
・単項!演算子は、bool型の値を返すメソッドを用いて得られる結果を反転したいときに便利
 例:Mathf.IsPowerOfTwo(整数)は、整数が2のべき乗値ならtrueを返す
  よって、if(!Mathf.IsPowerOfTwo(整数)) { 整数が2のべき乗ではないときの処理 }

提出:アレンジ演習:p.091 Chap2_7_3

・「9」をパブリック変数で与えるようにしよう
・変数値を用いて「●は2のべき乗ではない」と表示するようにしよう
・パブリック変数が負の数の場合の動作を確認しよう

講義メモ

・p.087「else if文をif文にすると」及び、if文のネストについての補足、多分岐構造の補足(switch文)から

提出フォロー:アレンジ演習:p.081 Chap2_6_1:つづき②

・上記の変更を元に戻してから、ageが負の数であれば「負の数は用いない」と表示する処理を追加しよう

作成例

//アレンジ演習:p.081 Chap2_6_1:つづき②
using UnityEngine;
public class Chap2_6_1 : MonoBehaviour {
    public int age;
    void Start() {
        if (age < 0) { //【追加】ageの値が0未満?
            Debug.Log("負の数は用いない"); //【追加】表示
        } else if (age < 20) { //【変更】ではなくてageの値が20未満?
            Debug.Log("未成年"); //表示
        } else if (age < 65) { //ではなくて(20以上で)65未満?
            Debug.Log("成人"); //表示
        } else { //上記のどれもなければ(65以上?)
            Debug.Log("高齢者"); //表示
        }
    }
}

p.087「else if文をif文にすると」

・これはif文の連続時に起こりやすいミスで、文法エラーや実行時エラーにならず、警告も表示されないで、注意が必要
例:正しい場合
 if (条件①) {
  処理内容①
 } else if (条件②) {
  処理内容②
 }
例:誤った場合
 if (条件①) {
  処理内容①
 } if (条件②) { //ここがミスの原因(elseの抜け)
  処理内容②
 }

 ↓ 実際は下記の構文とみなされてしまう

 if (条件①) {
  処理内容①
 } 
 if (条件②) { //ここがミスの原因
  処理内容②
 }

アレンジ演習:p.085 Chap2_6_1.cs:つづき③

・つづき②の変更内容を元に戻してから:
・「else if」を「if」にわざと誤って、どういう動作になるか確認しよう
 ⇒ageが20未満だと「未成年」「成人」の両方が表示されてしまう

作成例

//アレンジ演習:p.085 Chap2_6_1.cs:つづき③
using UnityEngine;
public class Chap2_6_1 : MonoBehaviour {
    public int age;
    void Start() {
        if (age < 20) { //ageの値が20未満?
            Debug.Log("未成年"); //表示
        } if (age < 65) { //【変更】「ではなくて(20以上で)」がなくて65未満?
            Debug.Log("成人"); //表示
        } else { //上記のどれもなければ(65以上?)
            Debug.Log("高齢者"); //表示
        }
    }
}

if文のネストについての補足

・ifのブロック内や、elseのブロック内に、さらにif文を記述できる
・これをif文のネストといい、条件の整合性やelseの後の合流に注意
例:aが偶数か奇数かを表示する。偶数の場合は4の倍数かどうかも表示する
 if (a % 2 == 0) {
  「偶数です」
  if (a % 4 == 0) { //ネストにすると効率が良い
   「4の倍数です」
  }
 } //ここまでが偶数の処理
 else { //偶数でなければ奇数なので
  「奇数です」
 }
誤った例:
 if (a % 2 == 0) {
  「偶数です」
  if (a % 4 == 0) { //ネストにすると効率が良い
   「4の倍数です」
  }
 //ここまでが偶数の処理…のつもりが…
 else { //内側の「if (a % 4 == 0)」のelseとみなされてしまう
  「奇数です」
 } //この後ろで「}」が足りない文法エラーになってしまう
・if文のネストは可能な限り論理演算子(p.088)を用いて回避すると良い(上の例は回避できないが)

多分岐構造の補足(switch文)

・if-else if-else構文による多分岐構造をより見やすくできる文法としてswitch文が提供されている
・利用には条件があるが、可能な限り利用することで可読性・保守性が向上する
 ※ switch文はC/C++/C#/Javaなどで利用可能だが、文法に差異があるので注意
・書式: 
 switch (整数式と文字列) { 
 case 整数値か文字列① : ①の場合の処理; …; break;
 case 整数値か文字列② : ②の場合の処理; …; break;
 :
 default : 上記のどれでもない場合の処理; …; break; //省略可
 }
 ※整数のみが可能で、実数は利用不可
 ※caseには値(または値を返す式)のみが可能なので「以上」「以下」などは表現できない
 ※場合の処理が1文しかなくても「break;」は必要
 ※C/C++などでは「break;」を省略する特殊技法があるが、C#では不可
・例:if-else if-else構文の場合
 if (a == 0) { 
  Debug.Log("0です");
 } 
 else if (a == 1) { 
  Debug.Log("1です");
 } 
 else { 
  Debug.Log("0、1以外です"); 
 }
・例:これをswitch文にすると非常にシンプルになる
 switch (a) { //aの値で分岐する
 case 0 : Debug.Log("0です"); break;
 case 1 : Debug.Log("1です"); break;
 default : Debug.Log("0、1以外です"); break;
 }

ミニ演習 mini087.cs

・int型のパブリック変数aの値により、0なら「グー」1なら「チョキ」2なら「パー」を表示しよう
・switch文を利用し、0,1,2以外であれば「なし」と表示すること

作成例

//ミニ演習 mini087.cs
using UnityEngine;
public class mini087 : MonoBehaviour {
    public int a;
    void Start() {
        switch (a) {
        case 0 : Debug.Log("グー");   break; //0の場合
        case 1 : Debug.Log("チョキ"); break; //1の場合
        case 2 : Debug.Log("パー");   break; //2の場合
        default: Debug.Log("なし");   break; //上記以外の場合
        }
    }
}

多分岐構造の補足(switch文)つづき

・整数型と文字列にのみ対応するが、char型は内部的に整数の文字コードになるので、switch文で利用可能

ミニ演習 mini087a.cs

・char型のパブリック変数aの値により、'a'なら「apple」'b'なら「banana」'c'なら「choco」を表示しよう
・switch文を利用し、'a','b','c'以外であれば「なし」と表示すること

作成例

//ミニ演習 mini087a.cs
using UnityEngine;
public class mini087 : MonoBehaviour {
    public char a;
    void Start() {
        switch (a) { //文字aの文字コードにより分岐
        case 'a' : Debug.Log("apple");  break; //aの場合
        case 'b' : Debug.Log("banana"); break; //bの場合
        case 'c' : Debug.Log("choco");  break; //cの場合
        default  : Debug.Log("なし");   break; //上記以外の場合
        }
    }
}

p.088 複数の比較式を組み合わせる:論理演算子(2項&&演算子)

・2項&&演算子:左辺と右辺がbool型の時、どちらもtrueなtrueを、でなければfalseを返す
・よって「アンド」「かつ」とも呼ばれる
・ifの条件式に用いると「if(条件① && 条件②) { ①②が共にtrueの時の処理 }」とできるので、2条件の「かつ」に該当する
・なお、この場合、①だけや②だけがtrueの場合、実行されない
・よって、2項&&演算子は値の範囲チェックに便利:
 「if(変数 > 下限 && 変数 < 上限) { 変数の値が下限と上限の間の時の処理 }」
・ただし、条件①と②が同時には成立できない場合、絶対にtrueにならないので注意
 例: if(a < 5 && a > 10) {ここに何を書いても実行されない}

アレンジ演習:p.089 Chap2_7_1

・ageが負の数の場合は「負の数は対象外」と表示しよう
・なお、全パターンをテストする必要がある(②と④は何も出ないが別パターン)
 ①負の数 ②正の数で6未満 ③6以上15以下 ④15超

作成例

//アレンジ演習:p.089 Chap2_7_1
using UnityEngine;
public class Chap2_7_1 : MonoBehaviour
{
    public int age;
    void Start() {
        if(age >= 6 && age <= 15) { //ageの値が6以上かつ15以下?
            Debug.Log("義務教育の対象");
        } else if(age < 0) { //ではなくてageの値が0未満?
            Debug.Log("負の数は対象外"); 
        }
    }
}

補足:複数の2項&&演算子

・2つ以上の2項&&演算子を並べて3つ以上の条件式を記述できる
 例: if (a == 0 && b == 0 && c == 0) {a,b,cがすべて0の場合の処理}
・なお、このような記述をすると、最初の方の条件式がfalseになると、後続の条件式は
 (trueになってもfalseになっても全体はfalse確定なので)評価されず、誤りが発見されづらいので注意

補足:短絡評価(ショートサーキット)

・上記の例のように、複数の比較式を組み合わせた時に、最初の方の条件式の評価により、全体の評価が確定してしまうことがある
・この時に、処理効率と安全性の向上の為に、それ以降の評価を行わないことを短絡評価という
・短絡評価は対応している演算子が2つあり、2項&&演算子と2項||演算子(後述)
・2項&&演算子の場合、最初の方の条件式がfalseになると、後続の条件式は
 (trueになってもfalseになっても全体はfalse確定なので)評価しない
・これは、誤りが発見されづらいというデメリットがある
・安全性の向上の例として「整数によるゼロ除算の防止」がある
 例: if (a != 0 && 5 / a > 2) {…} //aが0だと「5/0」は実行されないので異常終了しない
 例: if (5 / a > 2 && a != 0) {…} //aが0だと「5/0」が実行されて異常終了

今週の話題

ゲームソフト販売本数ランキング:今週1位も「マリオカート ワールド(Switch2)」 GO!
DLSS/FSRは全部同じじゃない!ゲーマーなら知っておきたい「超解像」「AIアンチエイリアシング」「フレーム生成」の違いを徹底解説 GO!
Limited Run Games、同社のレトロゲーム復刻ゲームエンジン「Carbon Engine」がスイッチ2に対応したことを発表。12タイトルの互換性が保証される GO!
著作権訴訟渦中のミッドジャーニーがAI動画生成スタート。5秒480pという低スペックながら使い勝手がいい理由 GO!

『Limbo』『Inside』の共同開発者の間で訴訟が勃発…古巣との9年に及ぶ確執に裁判での情報公開に期待と元スタジオCEO GO!
Steam版『モンハンワイルズ』“圧倒的に不評”を記録―一時期は同接138万人越えの大作 GO!