C++ショート評価ポリシー

845 ワード

ショート評価とは
論理和論理またはオペレータは、常に左のオペランドを計算してから右のオペランドを計算します.この論理式の結果は、左のオペランドの値だけでは決定できない場合にのみ、右のオペランドが解かれます.この評価ポリシーを「ショート評価(short-circuit evaluation)」と呼ぶことが多い.
なぜ短絡して値を求めるのか
1、プログラムの運行効率を高める:左操作数で論理式を確定できる結果、右操作数を計算しないでプログラム計算量を下げ、プログラム効率を高める.
2、予想しがたい結果を防ぐ.
3、コードのロジックはもっと緊密です.
#include 
#include 
using namespace std;

int main()
{
    string str("");

    if(!str.empty() && 'c'==str[0]) { //  1
        cout << str << endl;
    }

    if( 'c'==str[0] && !str.empty()) { //  2
        cout << str << endl;
    }

    return 0;
}
str文字列が空なのでstr.empty()はtrue、!str.empty()はfalseなので、書き方1の右操作数「c」==str[0]は実行されません.書き方2が最初に実行されるのは「c」==str[0]であり、str[0]は私たちが割り当てていないメモリ空間であり、それを読み書きするのは合法的ではなく、結果も予想しにくい.