C言語における「文字セット」や「文字型」に関する詳細な情報を提供します。C言語では、文字や文字列の扱いに関する多くの規則があります。以下にC言語で使用される主要な「文字」と「文字型」について説明します。
1. C言語における「文字」概念
C言語で「文字」とは、基本的には1バイト(8ビット)のデータを表すものとして扱われます。これはASCIIコードを基にしています。C言語では、文字を定義するためにchar
型が使われます。

文字リテラル
文字は通常、シングルクォート('
)で囲むことによって指定されます。例えば、次のように書きます:
cchar c = 'A'; // 'A'は文字リテラル
文字リテラルは常に1バイトとして格納されます。char
型は通常、8ビットのサイズで、これによって1文字を表現します。
2. C言語の「文字型」
C言語で使用される文字型は、主にchar
型、unsigned char
型、およびsigned char
型の3種類です。
2.1 char
型
char
型は、基本的な文字データを格納するための型です。通常、1バイト(8ビット)のデータを保持します。C言語では、この型は符号付き(signed)または符号なし(unsigned)で扱われることがありますが、デフォルトでは符号付きと見なされることが多いです。
cchar c = 'a'; // 'a'は文字リテラル
2.2 signed char
型
signed char
型は、char
型と同様に1バイトのデータを保持しますが、符号付きの数値として解釈されることが明示的に指定されています。これにより、負の値も取り扱うことができます。
csigned char c = -128; // 符号付きの1バイト整数
2.3 unsigned char
型
unsigned char
型は、符号なしの1バイトデータを格納するための型です。これにより、0から255の範囲で数値を保持することができます。
cunsigned char c = 255; // 符号なしの1バイト整数
3. 文字セット
C言語では、文字は通常、ASCIIコードを使って表現されます。ASCII(American Standard Code for Information Interchange)は、文字を0から127の範囲の整数値に対応させる規格です。
3.1 ASCIIコード
ASCIIコードでは、例えば次のような対応がされています:
- ‘A’ = 65
- ‘B’ = 66
- ‘a’ = 97
- ‘b’ = 98
- ‘0’ = 48
- ‘\n’(改行)= 10
- ‘\t’(タブ)= 9
これにより、C言語で文字を整数として扱うことが可能です。
cchar c = 'A';
int i = c; // iには65が代入される
3.2 拡張ASCII(8ビット)
標準ASCIIコードは0から127の範囲ですが、拡張ASCIIでは128から255の範囲も扱うことができます。これにより、特殊文字や外国語の文字などを表現することができます。
cunsigned char c = 200; // 200は拡張ASCIIの範囲
4. 文字列
C言語では、文字列は文字の配列として表現されます。文字列リテラルはダブルクォート("
)で囲まれます。
cchar str[] = "Hello, World!"; // 文字列リテラル
文字列は、文字の配列としてメモリ上に格納され、最後にヌル文字('\0'
)で終了します。これにより、文字列の長さを特定することができます。
5. 特殊文字
C言語では、いくつかの特殊文字(エスケープシーケンス)が定義されています。これにより、文字列内で制御文字や特殊文字を表現することができます。代表的なエスケープシーケンスは次の通りです:
\n
:改行\t
:タブ\\
:バックスラッシュ\'
:シングルクォート\"
:ダブルクォート
例:
cprintf("Hello, World!\n"); // 改行を含む文字列を出力
6. まとめ
C言語における「文字」や「文字型」には、様々な規則やデータ型が存在します。基本的な文字型はchar
型であり、これを基にしてsigned char
やunsigned char
を使用することができます。また、ASCIIコードや拡張ASCIIを用いることで、文字を整数として扱うことができ、文字列は文字の配列として扱われます。特殊文字やエスケープシーケンスを駆使することで、より柔軟に文字や文字列を操作することが可能です。