C言語のchar型とは?文字と数値の関係・signed/unsignedの違いと使い分けを解説

C言語の char 型は「文字を扱う型」として紹介されることが多いですが、
実際には1バイト(8ビット)の整数型です。

そのため、文字だけでなく、数値やバイトデータとしても広く使われます。

この記事では、char の正体から、文字コードとの関係、
char / signed char / unsigned char の違いと使い分けまで整理します。


目次

char型の正体(1バイトの整数)

C
char c = 'A';

これは文字を扱っているように見えますが、
実際には「数値」が入っています。


初心者さん

文字なのに数値なんですか?

エンジニアくん

そう。charは“1バイトの整数”なんだよ


型に関する基本的な内容はこちらの記事でも解説しています。


C言語文法解説シリーズ

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

C言語文法解説シリーズ一覧はこちら

文字コードとは

コンピュータは文字そのものではなく、
数値で文字を管理しています(文字コード)。

例えば👇

C
char c = 'A';

これは内部的にはこうなっています👇

C
char c = 65;

👉 'A' は 65 という数値


初心者さん

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

エンジニアくん

値としては同じ。書き方が違うだけ


charは数値としても使える

char は整数型なので、計算もできます。

C
char c = 'A';
c = c + 1;

結果👇

'B'

👉 65 → 66 になるため


char / signed char / unsigned char の違い

ここが重要です。


■ 範囲

範囲
signed char-128 ~ 127
unsigned char0 ~ 255
char処理系依存(どちらか)

初心者さん

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

エンジニアくん

それが環境依存なんだよ


👉 char は環境によって

  • signed になる場合
  • unsigned になる場合

があります。


使い分け(ここが本質)

ここからが一番重要です。


■ ① 文字として使う → char

C
char c = 'A';
  • 文字を扱う
  • 文字列(char配列)

👉 符号はあまり意識しない


■ ② バイトデータ → unsigned char

C
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

C
signed char temp;
  • -128~127の範囲で十分な場合
  • メモリを節約したい場合

👉 小さな数値データとして使う


まとめ(使い分け早見)

用途
文字char
バイトデータ
0以上の小さい数
unsigned char
小さい整数signed char

👉 用途で選ぶのが正解

signed / unsigned の使い分けについてはこちらの記事でも解説しています。


注意点

■ charの符号は環境依存

char は、環境によって
「signed(-128~127)」にも「unsigned(0~255)」にもなります。

C
char c = 200;

このコードは、環境によって結果が変わる可能性があります。


初心者さん

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

エンジニアくん

そう。だから数値として使うなら明示した方がいい


👉 対策

  • 0〜255を扱う → unsigned char
  • 負の値を扱う → signed char

👉 charのまま使わないのが安全


■ 文字と数値は別物

C
char c = '1';

👉 これは数値の1ではない
👉 '1' は文字コードで 49


初心者さん

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

エンジニアくん

ここでバグる人多い


C
char a = '1';  // 49
char b = 1;    // 1

👉 意味がまったく違う


■ charは用途で意味が変わる

C
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言語の基本文法をこちらの記事で整理しています。

技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。

小さなご相談からでもお気軽にご連絡ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする


目次