C言語入門|char型とは?1文字を格納するしくみと日本語が入らない理由

C言語で文字を扱うときに登場する基本の型が char型(キャラ型/チャー型) です。
「1文字を保存する箱」として使われる、とても重要で便利なデータ型なんですね😊

でも実は、
char型には “半角英数字や記号しか入らない”
という大きな特徴があります。

ここでは、「なぜ1文字しか入らないの?」「なぜ日本語が入らないの?」を、しくみから優しく解説していきます✨

🧱 文字は数値として保存されているって知ってた?(文字コードの仕組み)

コンピュータは文字をそのまま理解できないので、
文字 → 数値(文字コード) に変換して保存しています。

例として、有名な ASCII コードではこんな対応になっています👇

文字割り当てられた数値
A65
*42
_95
{123

つまり、

'C' を代入する → 実際には 67 が保存される

ということです。

🧪 char型のサンプル

プロジェクト名:2-7-1 ソースファイル名: sample2-7-1.c

#include <stdio.h>

int main(void)
{
    char grade;        // 成績ランク(1文字)
    grade = 'B';       // 実際には 66 がメモリに入る

    printf("評価ランク: %c\n", grade);
    printf("内部コード: %d\n", grade);

    return 0;
}

🔍 命令の説明

printf

  • 書式:printf("書式文字列", 値);
  • %c → 文字として表示
  • %d → 数値(文字コード)として表示

🧩 なぜ char は “1文字だけ” しか保存できないの?

char型は 1バイト(8ビット) のデータしか保存できません。

つまり、

  • 保存できる値の種類は 0〜255 の 256種類
  • そのため入れられる文字も 256種類まで

ASCII は128種類、拡張ASCIIは256種類なので、
半角文字だけなら char で十分 というわけです。

図で表すとこうなります👇

😢 日本語(全角文字)が入らない理由

日本語は「漢字・ひらがな・カタカナ」など膨大な種類があります。
JIS・Unicode では 何千〜数万文字 が収録されています。

▶ char の 256種類では到底足りません!

たとえばこのコード

char element;
element = '火';

これは char に収まらないため コンパイルエラー になります。

日本語を扱う場合は もっと大きい型、例えば wchar_t が必要になります。

🧠 日本語の文字コードはどうなってるの?

ASCII(半角英数字) → 1バイトでOK(256種類以内)
日本語(漢字・ひらがな)→ 数千〜数万文字(1バイトでは絶対足りない)

なので char 型には入りません。

📚 char型は文字型であり“整数型”でもある

char型は中身が数値なので、本質的には 整数型 の仲間です。

型名説明
char1バイトの整数型。結果として文字も扱える。

つまり、

char letter = 'C';

は実際には

letter = 67;

と同じ意味なんですね😊

🎉 あなたはチャー派?キャラ派?

char の読み方は実は人によってバラバラ。

  • 「チャー型」
  • 「キャラ型」
  • 「キャラクター型」

どれも一般的で、正解はありません😊