NXTで見かけるU32とかS8とかいう型は何か?
NXTを触ってるとU32とかS8とかF32とかいう方が出てくる。一体なんなのかなと思ったらtypedefした型だった。
宣言の場所は、
- nxtOSEK/ecrobot/c/ecrobot_types.h
- nxtOSEK/lejos_nxj/src/nxtvm/platform/nxt/mytypes.h
に宣言してあった。
抜き出した部分は以下の通りになってる。
// nxtOSEK/ecrobot/c/ecrobot_types.h typedef float F32; typedef double F64;
// nxtOSEK/lejos_nxj/src/nxtvm/platform/nxt/mytypes.h typedef unsigned char U8; typedef signed char S8; typedef unsigned short U16; typedef signed short S16; typedef unsigned long U32; typedef signed long S32;
U32とかS8とかを、Sxx,Uxx,Fxx(xx部分は数値)とする。それぞれどんな型かというと
- Sxx: xxbitのsinged(符号あり)整数型
- Uxx: xxbitのunsigned(符号なし)整数型
- Fxx: xxbitの浮動小数点型
になる。
xxは、8,16,32,64という風に4つほどあって、それぞれ
_8 | 8bit | 1byte | char |
_16 | 16bit | 2byte | short |
_32 | 32bit | 4byte | long |
_64 | 64bit | 8byte | long long |
という風になってる。F32,F64はfloat,doubleなのでコンパイラや、開発環境によって異なるので、もしかしたら違うかもしれない。基本的にはこの定義で問題はないんじゃないかと思う。