C言語のu_int16とかって何なのよ。
Unix向けに書かれたC言語のプログラムで見るu_int8
や、u_int16
、u_int32
って型は何なのか。というお話。
そんな検索ワードで来てくださった方が居たようなので。
たとえばu_int16
の場合、最初のu_
はunsignedであること = 0未満を扱わないことを、最後の16
は16bit分のサイズがあることを示しています。
u_
を外してsignedになってマイナスを扱えるようになりますし、16
の代わりに8
や32
にすると格納できる容量が変わります。
似たような型を並べてみると以下のようになります。
名前 | 別名 | サイズ | 最小値 | 最大値 |
---|---|---|---|---|
unsigned char | char / u_int8 / uint8_t | 8bit | 0 | 255 |
signed char | int8 / int8_t | 8bit | -128 | 127 |
short int | short / int16_t | 16bit | -32,768 | 32,767 |
unsigned short int | unsigned short / u_int16 / uint16_t | 16bit | 0 | 65,535 |
int | signed int | 32bit (※) | -2,147,483,648 | 2,147,483,647 |
unsigned int | uint | 32bit (※) | 0 | 4,294,967,295 |
long int | int32_t | 32bit | -2,147,483,648 | 2,147,483,647 |
unsigned long int | u_int32 / uint32_t | 32bit | 0 | 4,294,967,295 |
long long int | int64_t | 64bit | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
unsigned long long int | u_int64 / uint64_t | 64bit | 0 | 18,446,744,073,709,551,615 |
※ int / unsigned int はOSによってサイズが異なる場合があります。
ちなみに、Windowsだと__int8
、__int16
、__int32
、__int64
もあります。
さらにはDWORD
(符号なし32ビット)、WORD
(符号なし16ビット)なども。
同じ型でもいろいろ呼び方があってややこしいですね。
参考: