首页 > 技术文章 > uint16,uint32是什么?

soft4 2015-08-22 17:02 原文

记得之前在刷笔试题的时候就看见过这个问题,发现当时上网百度后又忘了。

最近在看CryEngine3引擎代码的时候又晕了,趁现在赶紧记下来~


在查看CE3的代码时我发现了这个变量,TFlowNodeId m_flowNodeId;

心想这是什么鬼?(请理解一个菜鸟没啥经验)

然后果断在VS下按F12查看定义,连着按了几次我终于捋清其中的奥妙。

所以我干脆把uint8,uint32的都找出来了~

typedef  unsigned  char  uchar;

typedef  uchar  uint8;

typedef   uint8  TFlowPortId;


typedef  unsigned  short  ushort;

typePOINTdef  ushort  uint16;

typedef  uint16  TFlowNodeId;

 

typedef  unsigned  int   uint;

typedef  uint  uint32;

 


下面我就要针对其意义简单的做一下分析了~

一般来说我们都知道typedef

用来给变量或结构体起别名,之后声明变量的时候看起来比较清晰易懂

例如 typedef char* PCHAR

或者   typedef struct tagPOINT
       {
             int x;
             int y;
       }POINT;

PCHAR c;

POINT P1;


在这里我们用typedef来定义与平台无关的类型

 intsize取决于平台,16位平台的sizeof(int)=2, 32位平台的sizeof(int)=4, 64位平台的sizeof(int)=8

(当然这个是不一定得,可能和平台以及编译器有关,多数情况是上面说的那样)


*比如我们想定义一个int16,想让他无论什么平台上都是占16位,即两个字节。

  那我们就只需要修改    typedef short int16;

  因为在16位和32位机器上(对于一般的编译器来说)short都是占16位,

  这样我们就可以声明  int16  a;就达到我们的效果了~



顺便贴一下:

32位系统,vc编译器中,

short占 2 字节,

int 、float、long 都占 4 字节,

double 占8 字节

具体占用几个字节,用sizeof();可以测出来的


上面代码还涉及到unsigned,无符号数,这个在之后的博客里再详细讨论一下吧~

上面有任何不对的地方还请指出,随时更正~


推荐阅读