初心者さんC言語って型がいろいろあって、何を使えばいいのか分かりません…



最初はみんなそこ迷うよね
まずは「基本型の全体像」から押さえよう
C言語では、データを扱うために「型(データ型)」という仕組みが用意されています。
int や char、float などさまざまな型がありますが、最初は「何が違うのか」「どれを使えばいいのか」で迷いやすいポイントです。
この記事では、C言語の基本型の全体像と、それぞれの使いどころを整理します。
まずは細かい仕様に入りすぎず、「どう使い分けるのか」という感覚をつかむことを目的にしています。
C言語文法解説シリーズ
本記事は「C言語文法解説シリーズ」の1つです。
C言語の文法を、組み込み開発の視点も交えて解説しています。
C言語文法解説シリーズ一覧はこちら


基本型の分類
C言語の基本型は、大きく次の3つに分かれます。
- 整数型(int系)
- 浮動小数点型(float系)
- 文字型(char)
この3つの役割を理解しておけば、多くのコードは読み書きできるようになります。



まずはこの3つだけ覚えればいいんですか?



そう。細かい違いはあとでいいから、まずは役割を押さえるのが大事だね
整数型(int系)
整数を扱うための型で、C言語の中でも最もよく使われます。
int a = 10;整数型には、扱える値の大きさや用途に応じていくつかの種類があります。
| 型 | 特徴 |
|---|---|
| char | 1バイトの整数 |
| short | やや小さい整数 |
| int | 一般的な整数 |
| long | 大きい整数 |
| long long | さらに大きい整数 |



こんなにあると迷いませんか?



最初は迷うけど、考え方はシンプルだよ
■ 整数型の選び方
- 特に制約がない場合 → int
- 扱う値の範囲が決まっている → それに合う型
- 通信データやバッファ → char や unsigned 系
👉 「用途に合わせて選ぶ」これが基本
※ 最大値・最小値やビット表現については、整数型の解説記事で詳しく説明しています。


■ 真偽値(bool)について
C言語では、条件分岐などで「真か偽か」を扱う場面が多くあります。
そのようなときに使うのが bool 型です。
#include <stdbool.h>
bool is_ready = true;
if (is_ready) {
// 処理
}


intでも0とか1で書けますよね?



書けるけど、読みやすさが全然違うね
int is_ready = 1; // 意味が分かりにくい
bool is_ready = true; // 意味が明確bool を使うことで、「これは状態を表す変数だ」という意図がはっきりします。
実体としては整数(0または1)ですが、意味を伝えるために使う型と考えると分かりやすいです。
浮動小数点型(float / double)
小数を扱う型です。
float f = 3.14f;
double d = 3.14;| 型 | 特徴 |
|---|---|
| float | メモリ使用量が少ない・精度が低い |
| double | 精度が高い |



どっちを使えばいいんですか?



ここも用途次第だね
- 精度が重要 → double
- メモリや処理負荷を抑えたい → float
環境によっては計算性能にも影響するため、状況に応じた使い分けが必要です。
文字型(char)
char は「文字を扱う型」として使われます。
char c = 'A';ただし、内部的には文字そのものではなく、**文字コード(数値)**を扱っています。
char c = 65; // 'A'


じゃあ、charって数値でも使えるんですか?



そう。1バイトの整数として使えるのが本質だね
そのため、組み込み開発では通信データやバッファとして使われることも多い型です。
char型についてはこちらの記事で解説しています。


型選びの考え方
ここまで見てきたように、型は「なんとなく」で選ぶものではありません。



結局、型選びはこれに尽きる👇
👉 「必要なものに合わせて選ぶ」
- どの範囲の値を扱うか
- どの程度の精度が必要か
- メモリに制約があるか
- どんな用途か(計算・通信・状態管理など)
この視点で考えると、自然に適切な型が選べるようになります。
組み込み開発でのポイント
組み込み開発では、さらに次の点も重要になります。
- メモリ制約 → 小さい型を選ぶ
- 通信仕様 → サイズを合わせる
- 処理性能 → 型によって影響する
そのため、次のような固定幅の型が使われることもあります。
#include <stdint.h>
uint8_t buf;
int16_t value;


じゃあ常にこれを使うんですか?



いや、そこはケースバイケース
コンパイラやターゲット環境を理解していれば、
通常の int や char を使っても問題ない場面も多くあります。
👉 重要なのは「目的に応じて使い分けること」
ポインタ(*)とは
C言語では、変数の「アドレス(メモリ上の位置)」を扱うためにポインタを使います。
int a = 10;
int *p = &a;


この「*」って何なんですか?



「ポインタ型」を表す記号だね
アドレスを扱う変数ってこと
ポインタを使うことで、関数に値を渡すだけでなく、
元の変数を直接操作することができます。
👉 ポインタはC言語の中でも重要な概念なので、別記事でもシリーズで詳しく解説しています。


修飾子とは
C言語では、変数や関数の振る舞いを制御するために「修飾子(キーワード)」を使います。
代表的なもの:
- static
- const
- volatile
- extern



型とは違うんですか?



型に「意味を追加するもの」だね
例えば const を使うと👇
const int a = 10;👉 値を書き換えられない変数になる
修飾子はメモリ配置や最適化にも関わる重要な要素です。
👉 それぞれの詳しい意味は個別記事で解説しています。








まとめ
- 基本型は「整数・小数・文字」の3つに分かれる
- 整数型には複数の種類があり、用途に応じて選ぶ
- bool は状態(真偽)を分かりやすく表現するための型
- float と double は精度とコストで使い分ける
- char は文字だけでなく数値としても使われる
- 型は目的に応じて選ぶことが重要
👉 詳しい仕様(最大値・ビット表現・使い分け)は、各解説記事で詳しく解説します
この記事が参考になった方へ
型を含むC言語の基本文法をこちらの記事で整理しています。


技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。
小さなご相談からでもお気軽にご連絡ください。









コメント