2013年4月1日月曜日

octave のブーリアン演算子と短絡ブーリアン演算子

Matlab の場合は、論理演算の OR を繋ぐときには | のひとつでも || のふたつでもいいのだが、Octave の場合には、これが厳密に区別されるようだ。
例えば、

clear; X=3; if (X==3 || UNDEFINED_VALUE == 1 ); fprintf('yes\n'); end
は X==3 の時点で if が成立するので、UNDEFINED_VALUE については関係ない。
UNDEFINED_VALUEが定義されていなくても yes と表示される。
これが、

clear; X=3; if (X==3 | UNDEFINED_VALUE == 1 ); fprintf('yes\n'); enderror: `UNDEFINED_VALUE' undefined near line 11 column 24
の場合には、UNDEFINED_VALUE が定義されていないことが明示的にエラー処理される。

Matlab と Octave の両方を書くときには、 || の2本で書いておいた方が、とりあえずは無難である。


短期目標:収束についての論文を水曜までに読み直す
今日の作業内容:最適解の存在の証明 2h
今日のランチ:ハンバーグデミソース&ブラッツ&ペッパーチキン
明日の予測作業時間:5h



0 件のコメント:

コメントを投稿