| ア | イ | ウ | エ | オ |
| カ | キ | ク | ケ | コ |
| サ | シ | ス | セ | ソ |
| タ | チ | ツ | テ | ト |
| ナ | ニ | ヌ | ネ | ノ |
| ハ | ヒ | フ | ヘ | ホ |
| マ | ミ | ム | メ | モ |
| ヤ | ユ | ヨ | ||
| ラ | リ | ル | レ | ロ |
| ワ | ヰ | ヴ | ヱ | ヲ |
| ン |
| A | B | C | D | E |
| F | G | H | I | J |
| K | L | M | N | O |
| P | Q | R | S | T |
| U | V | W | X | Y |
| Z | 数字 | 記号 | ||
本来は8ビット以下の符号化文字集合しか考慮していない時代のCにおいて、一つの文字を表現する型であった。
つまり、文字→character→char、というのが、そもそもの由来である。
が、今の時代にそのような無知は通用しない(ことになっている)。
C/C++では最低でも8ビット以上のビット幅を持つ整数型を意味するが、符号付きか符号なしかは処理系に依存する。
すべての環境を調査したわけではないが、GCCは符号無しのunsigned charとなる実装が多いようであり、Microsoft C/C++では符号ありのsigned charである。
なお、if文などの処理においては汎整数拡張の対象となっているため、使用には注意を要する。
パーソナルコンピューターでは一般に8ビット長だが、DEC PDP-10、IBM 7090、ACOS-6の動作するNECのメインフレームなど、36ビットワードマシンでは1バイトが9ビットであり、charも9ビット長となっている。
ANSI Cの時代より、limits.hにおいて以下の6個のマクロ定数が定義されるようになった。これを利用すると、その環境での長さを得ることができる。
Javaは、文字をUnicodeで表わす。charは符号なし16ビット整数型である。
Cにおけるcharと同等の予約語は、Javaではbyteとなる。
JavaはUnicodeの符号化としてUCS-2を想定しており、このためcharは16ビットである。結果として、UnicodeのコードポイントU+0000からU+FFFFまでを扱うことができた。
しかし、Unicode 2.0からサロゲートペアの仕様が盛り込まれ、Unicode 3.1からは実際の文字の割り当てが始まった。結果、UnicodeではU+10FFFFまでのコードポイントが扱われる。
Javaの5.0以降、JavaもUnicode 4.0.0をサポートし、これに伴いサロゲート領域の文字も扱えるようになった。サロゲート領域の文字は、2個のcharで表現される。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます