「関数は成功しましたか?」「0です」「今度はどうですか?」「1です」「ええい! よーわからんのや!」「では、true でどうでしょうか?」「おお、よく分かる」というお話です(謎)。
では、今回の要点です。
では、いってみましょう。
さて、ある関数があります。その関数が成功したか失敗したかを返すとします。こういうとき、あなたならどうしますか?
簡単に考えれば「戻り値を0か1かにしてそれを条件にして判定する」という方法が思いつくでしょう。この考えはごくごく普通の考え方ですが、なんか0と1というのはダサいですね。
そこで、C++にはたった2つの値しかとれないような型が存在します。それが論理型 bool です。第21章でちらと表に出てきたのを覚えている人はいるでしょうか?
bool 型のとれる値は2つです。それは true と false です。「真」と「偽」ですね。
これを if 文に入れてみるとどうなるのでしょうか? 両方真になったり、両方偽になったりするでしょうか? まさかそんなアホなことは起こりません。true は真、false は偽と判定されます。
また、条件文は0か1の数値として使えるのでした。ということで、true は1、false は0の数値として使えます。
うーん。bool についてはこれ以上話すことはないですね。(^ ^; では、例でも1つ書いて今回はもう終わりにしましょう。
そうですね。第64章の Input 関数の戻り値を bool 型にするといいでしょうね。ついでに、第44章で紹介した絶対値を求める関数 abs と fabs 、また、インライン関数も使って、豪華に仕立ててあげましょう。することありませんし。
プログラム |
---|
// Ovload1b.cpp #include <iostream.h> #include <math.h> // 絶対値を求める // abs で扱う数の型は int なので、int にしました inline int Abs(int a) { return abs(a); } inline double Abs(double a) { return fabs(a); } // 入力 bool Input(int& nInt, double& nDouble) { cout << "整数値を入力して下さい > " << flush; cin >> nInt; if(nInt == 1) return false; cout << "小数値を入力して下さい > " << flush; cin >> nDouble; return true; } // 絶対値の表示 void DispAbs(int nInt, double nDouble) { cout << nInt << " の絶対値は " << Abs(nInt) << "で、" << endl << nDouble << " の絶対値は " << Abs(nDouble) << "です。" << endl; } int main() { int nInt; double nDouble; while(Input(nInt, nDouble)) DispAbs(nInt, nDouble); return 0; } |
実行結果例 |
整数値を入力して下さい > -126 小数値を入力して下さい > 0.23 -126 の絶対値は 126 で、 0.23 の絶対値は 0.23 です。 整数値を入力して下さい > 319 小数値を入力して下さい > -0.2 319 の絶対値は 319 で、 -0.2 の絶対値は 0.2 です。 整数値を入力して下さい > 1 |
while の条件に直接 Input 関数を渡しています。true を返したときはループを続け、false を返したときはループを終わるわけです。実際動作させてみても、そうなっていることがわかります。
今回は非常に楽でした。この内容なら、もっと早くやってもよかったですね。
では、今回の要点です。
それでは、次回まで。
Last update was done on 2000.8.29
この講座の著作権はロベールが保有しています