• ベストアンサー

c++ cmathとmath.h

お世話になります。c++を始めたばかりの者です。 cmathとmath.hの二つのヘッダーファイルは、それぞれ何をするときに使用するのでしょうか。 教本やネットを調べてもイマイチ理解できず、質問させていただきました。 ご回答よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

どちらも数値演算をする際に使用するヘッダファイルです。 どちらを使用すべきかは、C言語では<math.h>の一択です。 C++ではどちらも使えます。というか、<cmath>は<math.h>をラップしていて結局同じ関数が呼ばれます。 では何が違うかというと、<cmath>をインクルードした時の数値演算関数はstd名前空間内に所属するようになります。それに対して、<math.h>をインクルードした時の数値演算関数はグローバル関数になります。

akebono003
質問者

お礼

ご連絡遅れ失礼しました。 ご回答ありがとうございました。 どちらでも使える、ということで安心しました。 参考にさせていただきます。

その他の回答 (1)

回答No.2

math.hは昔のコードとの互換性のために使えるようになっているだけで、新規作成するC++のコードでは使ってはいけません。cmathをincludeして、std::log2(2);のように書きましょう。 C++11の下書き (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf ) で見た感じですが、このAnnex D compatibility features、D.5 C standard library headersにそのことが載っています。なお、Annex Dに書いてあることはすべて互換性のために使えるようになっている非推奨の機能です。新しいC++のコードではmath.dでなくcmathなどを使うようにしましょう。 cmathそのものはsin、cos、log、exp、sqrtなど数学的な計算が必要なときに使います。何の関数が使えるかはこれを見ると良いでしょう。 http://www.cplusplus.com/reference/cmath/

akebono003
質問者

お礼

ご連絡遅れ失礼しました。 ご回答ありがとうございました。 URLまでつけていただき、大変助かります。 参考にさせていただきます。

関連するQ&A