uint16,uint32是什么?记得之前在刷笔试题的时候就看见过这个问题,发现当时上⽹百度后⼜忘了。
最近在看CryEngine3引擎代码的时候⼜晕了,趁现在赶紧记下来~
在查看CE3的代码时我发现了这个变量,TFlowNodeId m_flowNodeId;
⼼想这是什么⿁?(请理解⼀个菜鸟没啥经验)
然后果断在VS下按F12查看定义,连着按了⼏次我终于捋清其中的奥妙。
所以我⼲脆把uint8,uint32的都出来了~
typedef unsigned char uchar;
typedef uchar uint8;
typedef uint8TFlowPortId;
typedef unsigned short ushort;
typePOINTdef ushort uint16;
typedef uint16TFlowNodeId;
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位,
sizeof是什么这样我们就可以声明  int16  a;就达到我们的效果了~
顺便贴⼀下:
32位系统,vc编译器中,
short占 2 字节,
int 、float、long 都占 4 字节,
double 占8 字节
具体占⽤⼏个字节,⽤sizeof();可以测出来的
上⾯代码还涉及到unsigned,⽆符号数,这个在之后的博客⾥再详细讨论⼀下吧~上⾯有任何不对的地⽅还请指出,随时更正~