您的位置:首页 > 产品设计 > UI/UE

uint16,uint32是什么?

2015-08-22 17:02 543 查看
记得之前在刷笔试题的时候就看见过这个问题,发现当时上网百度后又忘了。

最近在看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来定义与平台无关的类型。

int的size取决于平台,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,无符号数,这个在之后的博客里再详细讨论一下吧~

上面有任何不对的地方还请指出,随时更正~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: