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なのでコンパイラや、開発環境によって異なるので、もしかしたら違うかもしれない。基本的にはこの定義で問題はないんじゃないかと思う。