0Pricing
C Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. math.hをインクルードする
  2. べき乗と平方根
  3. 三角関数と対数
  4. 丸めと絶対値
← C Academyに戻る