Microsoft C/C++的固定大小整数类型

(1)__int8、__int16、__int32、__int64

__int8、__int16、__int32、__int64这些是Microsoft 专用,在头文件stdio.h中声明:
Microsoft C/C++ 功能支持固定大小整数类型。您可以使用 __intn类型说明符声明 8 位、16 位、32 位或 64 位整数变量,其中 n 为 8、16、32 或 64。

以下示例为这些类型的固定大小整数声明了一个变量:

__int8 nSmall; // Declares 8-bit integer
__int16 nMedium; // Declares 16-bit integer
__int32 nLarge; // Declares 32-bit integer
__int64 nHuge; // Declares 64-bit integer

__int8、__int16 和 __int32 类型是大小不同的 ANSI 类型,用于编写在多个平台中具有相同行为的可移植代码。 __int8 数据类型与 char 类型是同义词,__int16 与 short 类型是同义词,而 __int32 与 int 类型是同义词。 __int64 类型没有 ANSI 等效项。

(2)int8_t、uint8_t、int16_t、 uint16_t、int32_t、 uint32_t、int64_t、uint64_t

这些在头文件stdint.h中声明:

#ifndef __int8_t_defined
# define __int8_t_defined
typedef signed char             int8_t;
typedef short int               int16_t;
typedef int                     int32_t;
# if __WORDSIZE == 64
typedef long int                int64_t;
# else
__extension__
typedef long long int           int64_t;
# endif
#endif
 
/* Unsigned.  */
typedef unsigned char           uint8_t;
typedef unsigned short int      uint16_t;
#ifndef __uint32_t_defined
typedef unsigned int            uint32_t;
# define __uint32_t_defined
#endif
#if __WORDSIZE == 64
typedef unsigned long int       uint64_t;
#else
__extension__
typedef unsigned long long int  uint64_t;

int_t 为一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是一种新的数据类型。因为跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以最有效的维护代码。

类型等价于比特字节最小值最大值
int8_tsigned char81-128127
uint8_tunsigned char810255
int16_tshort162-32,76832,767
uint16_tunsigned short162065,535
int32_tint324-2,147,483,6482,147,483,647
uint32_tunsigned int32404,294,967,295
int64_tlong long648-9,223,372,036,854,775,8089,223,372,036,854,775,807
uint64_tunsigned long long648018,446,744,073,709,551,615

一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值