C++ショート評価ポリシー
845 ワード
ショート評価とは
論理和論理またはオペレータは、常に左のオペランドを計算してから右のオペランドを計算します.この論理式の結果は、左のオペランドの値だけでは決定できない場合にのみ、右のオペランドが解かれます.この評価ポリシーを「ショート評価(short-circuit evaluation)」と呼ぶことが多い.
なぜ短絡して値を求めるのか
1、プログラムの運行効率を高める:左操作数で論理式を確定できる結果、右操作数を計算しないでプログラム計算量を下げ、プログラム効率を高める.
2、予想しがたい結果を防ぐ.
3、コードのロジックはもっと緊密です.
例
論理和論理またはオペレータは、常に左のオペランドを計算してから右のオペランドを計算します.この論理式の結果は、左のオペランドの値だけでは決定できない場合にのみ、右のオペランドが解かれます.この評価ポリシーを「ショート評価(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]は私たちが割り当てていないメモリ空間であり、それを読み書きするのは合法的ではなく、結果も予想しにくい.