UINT

更新时间:2024-10-01 16:06

UINT类型,在WINDOWS API中有定义,它对应于32位无符号整数

简介

无符号整型(unsigned int):取值是 2^32 - 1,即:0~4294967295

就拿十进制的32767(以下的所有举例均拿这个数字来说事了)来说,它的二进制为:

0111 1111 1111 1111

对于无符号的整型32767来说,它的二进制的最高位称为数据位,即那个0就是数据位,数据位是要参与运算的,如果我们把0改成1,即16个1,它的十进制就是65535(就是2的15次方+2的14次方...一直加到2的0次方),这是不同于有符号整型的。

有无符号的根本原因可以说就是因为数据出现了溢出现象导致的。

无符号值可以避免误存负数, 且扩大了表示范围。

如:

人 150 岁之内 unsigned tinyint 1 无符号值: 0 到 255。

龟 数百岁 unsigned smallint 2 无符号值: 0 到 65535。

恐龙化石 数千万年 unsigned int 4 无符号值: 0 到约 42.9 亿。

太阳 约 50 亿年 unsigned bigint 8 无符号值: 0 到约 10 的 19 次方。

应用

在C, C++中不存在UINT这个关键字

UINT类型是unsigned int派生出来的

int是带符号的,表示范围是:-2147483648 到 2147483647

uint是不带符号整型,表示范围是0到42949 67295(2^32-1),即第一个数字不表示符号

在C#中,uint 是关键字

表示一种整型,该类型根据下表显示的大小和范围存储值

在MFC中的解释

在MFC中,Data Types关于UINT的解释:

UINT A 16-bit unsigned integer on Windows versions 3.0 and 3.1; a 32-bit unsigned integer on Win32.

c++ 中几种int的关系

int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧

__int16、__int32这种数据类型在所有平台下都分配相同的字节。所以在移植上不存在问题。

所谓的不可移植是指:在一个平台上编写的代码无法拿到另一个平台上运行时,不能达到期望的运行结果。

例如:在32为平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台是则分配2个字节,那么在16位上编译出来的exe,其中是为int分配2字节,而在32位平台上运行时,会按照4个字节来解析,显然会出错误的。

而对于非int行,目前为止,所有的类型分配的字节数都是兼容的,即不同平台对于同一个类型分配相同的字节数。

下面是各个类型一览表,64位指的是cpu通用寄存器的数据宽度是64位的。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}