是否有针对'unsiged integer'定义的缩短标签typedef,适用于大多数/所有平台?我在Windows中看到了uint或UINT,但是理解这并不是在其他平台上一贯实现的 . 我很乐意为每个实例输入'unsigned int',但如果有一个标准的typedef(比如'uint',虽然没有一贯实现),我会用它 . 我怀疑在进行一些研究后情况并非如此,但人们可能对此有一些了解 . C 11等,或* nix / Windows上实现相同标签的标准标头 . 我对严格指定unsigned int的位大小并不感兴趣:它仅用于低迭代循环 .
3 回答
unsigned int
的缩写是unsigned
. 同样,long int
可以缩短为long
,unsigned long int
可以缩短为unsigned long
.此规则有一个例外:
signed char
或unsigned char
可以缩短为char
.基本上,类型大小由您正在使用的编译器以及目标程序(可执行文件)将在其上运行的平台定义 .
例如,在x86机器上,几乎所有编译器都将
int
(因此unsigned int
)表示标准的32位整数 . 但是,在假设的128位CPU上,int
可能会引用64位或128位整数 .但是,如果你像我一样并坚持要知道你的整数大小是什么,我建议你查看
cstdint
Headers ,这是在C 11中引入的 .这允许您独立于编译器和平台指定特定大小的整数(例如
uint32_t
) . 但请注意,如果某个特定平台不支持该大小,您的程序将无法编译 .查看此站点以获取更多详细信息:http://www.cplusplus.com/reference/cstdint/使用
#include <stdint.h>
表示C和#include <cstdint>
表示C.语言标准和标准库没有为类型定义任何“普通”别名,除了提供替代名称之外,这些别名没有用处 .
标准库确实定义了几个具有平台相关含义的类型别名 . 例如,整数类型
std::uintptr_t
是一个足以表示任何对象指针值的整数类型;std::max_align_t
是一种类型,其alignof
-value是平台提供的最大值 . 其他类型别名是条件定义的std::uint32_t
等,如果它们存在,则是具有二进制补码表示的固定宽度的整数类型 . 当然,这些只是其中一种基本类型的typedef,但意义不同,并且这些都不是微不足道的,所以有充分的理由拥有这些typedef .