unsigned char

読み:アンサインド・チャー
読み:アンサインド・キャラ
外語:unsigned char 英語
品詞:名詞

C/C++などで、「符号なしの文字型」を示す。

目次

C/C++

仕様

unsignedcharはそれぞれが予約語であり、この組み合わせである。

変数の長さ自体はcharと同じであるが、符号ビット分の1ビットが無いため、有効数値ビット数が1ビット分長くなる。代わりに0と正の数しか利用できない。

Cの標準関数で、文字を扱うものは基本的にcharである。主要な実装では、GCCは符号無しのunsigned charとなる実装が多いようだが、Microsoft C/C++では符号ありのsigned charである。

printf

printfのフォーマット文字列は、標準的には%hhuなどを用いるが、C99以降でしか対応しない。

一般的には、unsigned intと同様に%uが使われる。

マクロ定数

パーソナルコンピューターでは一般に8ビット長だが、DEC PDP-10、IBM 7090、ACOS-6の動作するNECのメインフレームなど、36ビットワードマシンでは1バイトが9ビットであり、charも9ビット長となっている。

ANSI Cの時代より、limits.hにおいて以下のマクロ定数が定義されるようになった。これを利用すると、その環境での長さを得ることができる。

UCHAR_MAX
unsigned char型の最大値 (例えば255)
CHAR_BIT
char型のビット長 (例えば8)
CHAR_MIN
char型の最小値 (例えば-128)
CHAR_MAX
char型の最大値 (例えば127)

typedef

ISO Cには、次のtypedefが存在する。

typedef unsigned char u_int8_t;

System V等古い実装では、次のtypedefが存在する。

typedef unsigned char unchar;

BSD系を中心に、次のtypedefが存在する。POSIX準拠の実装(_POSIX_SOURCE定義)では使用できない。

typedef unsigned char u_char;

Windowsでは、次のtypedefが存在する。

typedef unsigned char BYTE;

typedef unsigned char UCHAR;

Java

Javaにはunsigned charは存在しない。

Javaのcharは常に符号なしの16ビット長である。unsigned char相当であるとはいえるが、Javaの場合はcharにsigned/unsignedの指定をすることはできない。

なお、Cにおけるcharと同等の予約語は、Javaではbyteとなる。

用語の所属
整数型
C
C++
関連する用語
unsigned
char

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club