math.hをインクルードする
mathライブラリをリンクして使用します。
「math.hをインクルードする」はCoddyKit上の無料C Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全4レッスンが含まれています。
math.hが存在する理由
Cは、コア言語を小さく保っています。平方根、累乗、三角関数などの演算は、言語自体に組み込まれていません。
代わりに、これらはmath.hという標準ライブラリのヘッダーに用意されています。これらの関数を使うには、プログラムの先頭でヘッダーをインクルードする必要があります。
ヘッダーのインクルード
ファイルの先頭付近に、stdio.hと並べて次の行を追加します。
#include <stdio.h>:入出力用#include <math.h>:数学関数用
山かっこは、コンパイラーに標準システムフォルダーを検索させる指定です。
#include <stdio.h>
#include <math.h>
int main(void) {
printf("math.h is ready\n");
return 0;
}math.hの最初の呼び出し
math.hをインクルードすると、sqrt(平方根)のような関数を呼び出せます。
ほとんどの数学関数はdouble値を受け取り、返します。そのため、結果は%fフォーマット指定子で表示します。
#include <stdio.h>
#include <math.h>
int main(void) {
double r = sqrt(16.0);
printf("sqrt(16) = %f\n", r);
return 0;
}数学ライブラリのリンク
一部のシステム(特にgccを使うLinux)では、数学関数が別のライブラリファイルに含まれています。
undefined referenceエラーが発生した場合は、コンパイル時に-lmフラグを追加します。
gcc program.c -lm
-lmは「数学ライブラリをリンクする」という意味です。
すべてdouble
デフォルトでは、math.hの関数はdouble型で動作します。doubleの引数を受け取り、doubleの結果を返します。
intを渡すこともできます。Cが呼び出しの前に自動的にdoubleへ変換します。
#include <stdio.h>
#include <math.h>
int main(void) {
int n = 25;
double root = sqrt(n);
printf("root = %f\n", root);
return 0;
}数学の結果を表示する
doubleを表示するには%fを使います。小数点以下の桁数は、%.2f(小数点以下2桁)のように指定できます。
これにより、長い小数値をすっきり読みやすく表示できます。
#include <stdio.h>
#include <math.h>
int main(void) {
double r = sqrt(2.0);
printf("%f\n", r);
printf("%.2f\n", r);
return 0;
}便利な定数
多くのシステムでは、math.hにM_PI(円周率)のような便利な定数が定義されています。
これらは厳密な標準規格の一部ではありませんが、非常によく使われます。M_PIがない場合は、自分で定義できます。
#include <stdio.h>
#include <math.h>
int main(void) {
printf("pi is about %.5f\n", M_PI);
return 0;
}中身を見てみる
math.hヘッダーには、目的別に分類された多くのツールがあります。
- 累乗・平方根:
pow、sqrt - 三角関数:
sin、cos、tan - 対数:
log、log10 - 丸め:
floor、ceil、round
次のレッスンでは、それぞれのグループを詳しく見ていきます。
数学とロジックの組み合わせ
math.hの結果は通常の数値なので、比較したりif文で使ったりできます。
ここでは、数値の平方根を整数と比較して、その数値が完全平方数かどうかを確認します。
#include <stdio.h>
#include <math.h>
int main(void) {
double root = sqrt(49.0);
if (root == 7.0) {
printf("49 is a perfect square\n");
}
return 0;
}よくあるミス
初心者がよくする次のミスに注意してください。
#include <math.h>を忘れる- Linuxでリンクするときに
-lmを忘れる %fではなく%dでdoubleを表示する
これらはいずれも、分かりにくいエラーや誤った出力の原因になります。
まとめて使う
ここでは、2つの数学関数を組み合わせて使う、完全な小さなプログラムを紹介します。
先頭のインクルードと、結果を格納するdouble型の変数に注目してください。
#include <stdio.h>
#include <math.h>
int main(void) {
double a = sqrt(81.0);
double b = pow(2.0, 5.0);
printf("sqrt=%.1f pow=%.1f\n", a, b);
return 0;
}クイックチェック
sqrtやpowのような関数を使うには、どのヘッダーをインクルードする必要がありますか?
まとめ
数学関数はmath.hに用意されており、#include <math.h>でインクルードすることを学びました。
これらの関数はdouble型を使い、%fで表示します。また、Linuxでは-lmリンクフラグが必要になる場合があります。次は、累乗と平方根を詳しく学びます。
よくある質問
「math.hをインクルードする」レッスンは無料ですか?
はい。「math.hをインクルードする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全4レッスンが含まれています。
「math.hをインクルードする」で何を学びますか?
mathライブラリをリンクして使用します。 ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「math.hをインクルードする」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC Academyレッスンでコードを書いて実行できますか?
はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。