3 種類の文字型

提供: Appmethod Topics
移動先: 案内検索

文字定数の概要:インデックス への移動

C においては,'A', '\t''\007' などの 1 文字定数も,int 値として表現されます。このとき,低位バイトは高位ビットに符号拡張されます。すなわち,その値が 12710 進)を超える場合,上位ビットは -1 (=0xFF) になります。char 型のデフォルトを unsigned とすれば,符号拡張は行われなくなります。

3 種類の文字型,charsigned char,および unsigned char は 8 ビット(1 バイト)の記憶領域を必要とします。デフォルトでは,コンパイラは文字宣言を signed として扱います。文字宣言を unsigned として扱うには -K コンパイラオプションを使用します。C プログラムの動作は,この 3 種類の文字型には影響を受けません。

C++ プログラムでは,char 型,signed char 型,あるいは unsigned char 型の引数を使って関数をオーバーロードできます。たとえば,以下の関数プロトタイプは有効で異なるものです。

void func(char ch);
void func(signed char ch);
void func(unsigned char ch);

上記のうち,1 つのプロトタイプしか存在しない場合でも,任意の 3 種類の文字型を受け取れます。たとえば,次のようなコードは有効です。

void func(unsigned char ch);
void main(void)
{
  signed char ch = 'x';
  func(ch);
}

関連項目