ucharとchar、scharの違い


一、ucahr:画像処理でよく使われるデータ型ucharで、一般的にunsigned charを指し、8-bit符号なし整形データであり、範囲は[0,255]であり、その定義は以下の通りである.
typedef unsigned char uchar;

二、schar:ucharに対応するのはscharで、定義は
typedef signed char schar;

取値範囲は[-128,127]であり、8-bit画像の階調レベル[0,255]に1つずつ対応しているため、画像階調操作の際によく用いられる(16進数の0 xffは10進数の255に対応).
#define CHAR_BIT      8         /* number of bits in a char */
#define SCHAR_MIN   (-128)      /* minimum signed char value */
#define SCHAR_MAX     127       /* maximum signed char value */
#define UCHAR_MAX     0xff      /* maximum unsigned char value */

三、char:charはC/C++整数型データの中で比較的奇妙なもので、単一文字を収容できるデータ型であり、他のint/long/shortなどsigned/unsignedを指定しない場合はデフォルトでsignedであるが、charは標準ではunsignedであり、コンパイラは記号付きに実現することができ、記号付きに実現することもでき、pSOSのようなコンパイラもある.また、コンパイルスイッチにより、符号数があるか無符号数かを指定することもでき、値範囲は[−128,127]である.