ストラウストラップのプログラミング入門(3) 第3章のつづき
『ストラウストラップのプログラミング入門』を読む。今日は3章の終わりまで。ドリルはまだ。
代入とか型の話とかが出てきた。ちょろっと引っかかったのは、以下。
p.46
この簡単なプログラムを実行してみよう。続いて、doubleの代わりにintを読み取るように変更してみよう。intではsqrt関数が定義されていないため、nをdoubleに代入し、そのsqrtを求めることに注意しよう。
sqrt関数は、intやdoubleの型ごとに定義されているものなの? 「パラメータにintを取るsqrtは定義されていない」の意?
sqrt関数ってこれだよね。
- C++ : Reference : Miscellaneous : valarray : sqrt http://cplusplus.com/reference/std/valarray/sqrt/
上の関数は、Cのsqrt関数をオーバーロードする、らしい。
- C++ : Reference : C Library : cmath (math.h) : sqrt http://cplusplus.com/reference/clibrary/cmath/sqrt/
たしかに、intは直接パラメータに取れないようだ。
#include "../../std_lib_facilities.h" // from http://www.stroustrup.com/Programming/ int main(){ cout << "Please enter a int value: "; int n; cin >> n; if(cin.fail()){ cout << "input error.\n"; return 1; } cout << "n == " << n << "\nsquare root of n == " << sqrt(n) << endl; return 0; }
上のプログラムを実行すると、5を入れても5.0を入れても、富士山麓オウム鳴く(なつかしい)が表示される。
これはintからdoubleへの型変換が行われるからだということは理解してる。