C言語の char 型は「文字を扱う型」として紹介されることが多いですが、
実際には1バイト(8ビット)の整数型です。
そのため、文字だけでなく、数値やバイトデータとしても広く使われます。
この記事では、char の正体から、文字コードとの関係、char / signed char / unsigned char の違いと使い分けまで整理します。
char型の正体(1バイトの整数)
char c = 'A';これは文字を扱っているように見えますが、
実際には「数値」が入っています。
初心者さん文字なのに数値なんですか?



そう。charは“1バイトの整数”なんだよ
型に関する基本的な内容はこちらの記事でも解説しています。


C言語文法解説シリーズ
本記事は「C言語文法解説シリーズ」の1つです。
C言語の文法を、組み込み開発の視点も交えて解説しています。
C言語文法解説シリーズ一覧はこちら


文字コードとは
コンピュータは文字そのものではなく、
数値で文字を管理しています(文字コード)。
例えば👇
char c = 'A';これは内部的にはこうなっています👇
char c = 65;👉 'A' は 65 という数値



じゃあ ‘A’ と 65 は同じなんですか?



値としては同じ。書き方が違うだけ
charは数値としても使える
char は整数型なので、計算もできます。
char c = 'A';
c = c + 1;結果👇
'B'
👉 65 → 66 になるため
char / signed char / unsigned char の違い
ここが重要です。
■ 範囲
| 型 | 範囲 |
|---|---|
| signed char | -128 ~ 127 |
| unsigned char | 0 ~ 255 |
| char | 処理系依存(どちらか) |



charってどっちなんですか?



それが環境依存なんだよ
👉 char は環境によって
- signed になる場合
- unsigned になる場合
があります。
使い分け(ここが本質)
ここからが一番重要です。
■ ① 文字として使う → char
char c = 'A';- 文字を扱う
- 文字列(char配列)
👉 符号はあまり意識しない
■ ② バイトデータ → unsigned char
unsigned char buf[256];


なんで unsigned なんですか?



データの正体がポイントだよ
コンピュータでは、データは1バイト(8ビット)単位で扱われます。
00000000 ~ 11111111
これは数値にすると👇
👉 0 ~ 255
通信やファイルで扱うデータは、
この「0〜255の値の並び」です。
例👇
- 画像データ
- ネットワーク通信
- バイナリファイル
👉 これらはすべて「バイト列」



なるほど、最初から0〜255なんですね



そう。だから負の値は出てこない
👉 そのため👇
- signed char → 範囲が合わない
- unsigned char → 完全に一致
👉 バイトデータは unsigned char が自然
その他、負の数にならないデータなどもunsigned charが自然です。
■ ③ 小さい整数 → signed char
signed char temp;- -128~127の範囲で十分な場合
- メモリを節約したい場合
👉 小さな数値データとして使う
まとめ(使い分け早見)
| 用途 | 型 |
|---|---|
| 文字 | char |
| バイトデータ 0以上の小さい数 | unsigned char |
| 小さい整数 | signed char |
👉 用途で選ぶのが正解
signed / unsigned の使い分けについてはこちらの記事でも解説しています。


注意点
■ charの符号は環境依存
char は、環境によって
「signed(-128~127)」にも「unsigned(0~255)」にもなります。
char c = 200;このコードは、環境によって結果が変わる可能性があります。



同じコードなのに変わるんですか?



そう。だから数値として使うなら明示した方がいい
👉 対策
- 0〜255を扱う →
unsigned char - 負の値を扱う →
signed char
👉 charのまま使わないのが安全
■ 文字と数値は別物
char c = '1';👉 これは数値の1ではない
👉 '1' は文字コードで 49



見た目同じで紛らわしいですね



ここでバグる人多い
char a = '1'; // 49
char b = 1; // 1👉 意味がまったく違う
■ charは用途で意味が変わる
char ch = 'A'; // 文字
unsigned char buf[256]; // バイトデータ同じchar系でも用途は別です。
👉 何を表しているかで型を選ぶのが重要
文字コードについて
C言語では、文字は文字コード(数値)として扱われます。
代表的なものに ASCII があります。
例👇
- ‘A’ → 65
- ‘0’ → 48
👉 詳しくは別記事で解説
まとめ
- char は1バイトの整数型
- 文字は数値(文字コード)として扱われる
- char / signed char / unsigned char は用途で使い分ける
- バイトデータは unsigned char を使うのが基本
- char の符号は環境依存なので注意
👉 charは「文字型」ではなく「1バイト整数」として理解するのがポイント
この記事が参考になった方へ
型を含むC言語の基本文法をこちらの記事で整理しています。


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









コメント