FC2ブログ
    08 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンUnityブログ】評価演算の&&と&の違い。&1個の使い道ってあるの? 

    こんにちは。
    もう秋だというのに全然涼しくなりませんね。
    日本も四季がなくなっていくっていう記事以前見ましたが、すでになくなってそうですね。
    坂内っす。


    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:



    最近演算子のことをちょっと調べる機会があったんです。
    普通によく書く演算子


    int a = 2;
    int b = 3;
    if (a == 1 && b == 3) {
    Debug.Log("同じだよ");
    } else {
    Debug.Log("違うよ");
    }



    &&

    ってやりますよね。

    「aが1 且つ bが3の場合true」

    上記のコードだと、aには2が入っているので、このifの中には入りません。

    違うよ

    と出力されます。

    この「&&」というように&を2個かくのを「短絡評価」というようです。

    「&」の評価と「&&」の評価の違いはなんでしょうか?


    ●「if(a == 1 & b == 3)」の場合
    aは1ですか?イイエ。
    bは3ですか?ハイ。
    片方がイイエなので、ifの中には入りません。


    ●「if(a == 1 && b == 3)」の場合
    aは1ですか?イイエ。
    イイエが1つでもあったので、ifの中には入りません。

    短絡評価の場合は、&&の前の評価がfalseの時点で&&の後の評価はしなくなります。
    これによって処理が早くなるらしいですね。

    確かに&&評価の場合は、片方がFalseの時点でそれ以降関係ないですもんね。

    では、なんで「&」なんてあるのか?全部「&&」でいいんじゃない?
    って思ったあなた。&だけのこともあるかもしれません。

    こんな感じのコードがあるとした場合、

    using UnityEngine;

    public class Blog20230904 : MonoBehaviour
    {
    int a = -1;
    int b = 2;
    int bChkCnt = 0;

    void Start()
    {
    if (CheckA() & CheckB()) {
    Debug.Log("TRUE");
    } else {
    Debug.Log("FALSE");
    }
    Debug.Log("CheckCount : " + bChkCnt);
    }

    bool CheckA() {
    if (a > 0) {
    return true;
    } else {
    return false;
    }
    }

    bool CheckB() {
    bChkCnt++;
    if (b > 0) {
    return true;
    } else {
    return false;
    }
    }
    }



    aのチェックとbのチェックを行い、両方のチェックでTrueが帰ってきたらTRUEと表示する。
    Bのチェックの際にBをチェックした回数をカウントアップしたい。
    この場合、「&&」だとチェックAがFalseの場合にBのチェックが行われないのでカウントが上がっていきません。
    そういう時には「&」を使い、毎回Bのチェックも行いカウントアップすることができます。

    どうでしょうか?
    こんなコードあり得るんか・・・?まぁあるかもしれない。
    プログラムの要件によりますよねw

    ということで、評価演算の「&&」と「&」の違いでした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0