uint16,uint32是什么?

骑猪看日落 2022-08-04 10:43 373阅读 0赞

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

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

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

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

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

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

  1. typedef unsigned char uchar;
  2. typedef uchar uint8;
  3. typedef uint8 TFlowPortId;
  4. typedef unsigned short ushort;
  5. typePOINTdef ushort uint16;
  6. typedef uint16 TFlowNodeId;
  7. typedef unsigned int uint;
  8. typedef uint uint32;

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

一般来说我们都知道typedef

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

  1. 例如 typedef char* PCHAR
  2. 或者 typedef struct tagPOINT
  3. {
  4. int x;
  5. int y;
  6. }POINT;
  7. PCHAR c
  8. 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,无符号数,这个在之后的博客里再详细讨论一下吧~

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

发表评论

表情:
评论列表 (有 0 条评论,373人围观)

还没有评论,来说两句吧...

相关阅读

    相关 uint16_t

    uint16\_t 是一种数据类型,它表示无符号 16 位整数。这种类型的整数值的范围是 0 到 65535,即最多可以表示 2^16 个不同的数字。uint16\_t 类型的

    相关 uint16uint32什么

    记得之前在刷笔试题的时候就看见过这个问题,发现当时上网百度后又忘了。 最近在看CryEngine3引擎代码的时候又晕了,趁现在赶紧记下来~   在查看CE3的代码时我发现