「関数は成功しましたか?」「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
この講座の著作権はロベールが保有しています