2009年10月13日火曜日

etc - NaN

今日から勉強するっ!
まずパッと本開いてあったのがNaNだ。
口をポカーンとあけて画面右を向いているおばさんの顔文字、では無いらしい。

今まで俺は関数の頭で事前条件を書いて、余計なもんは入れない主義で、
たとえば、こんな感じで事前条件に対して、できるだけスルー力を発揮する癖があった。


bool set_time(float time) {
if (time < 0) return false;
// ここは0以上のはず
this->time = time;
return true;
}


だがしかし。timeがNaNだったすると、これは失敗する可能性があるらしい。
NaNについてはググって貰うとして、この関数の失敗可能性を減らすコードはこうらしい


bool set_time(float time) {
if (time >= 0) {
// ここは0以上のはず
this->time = time;
return true;
} else {
// 0未満またはNaN
return false;
}
}


NaN・・・恐ろしい子!

0 件のコメント: