首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unsigned int C++可移植性

Unsigned int C++可移植性
EN

Stack Overflow用户
提问于 2013-09-15 20:09:35
回答 3查看 2.8K关注 0票数 1

有没有为'unsiged integer‘定义的缩短标签typedef,它可以在大多数/所有平台上工作?我在Windows中看到了很多uint或UINT,但我知道这在其他平台上并没有一致的实现。我很乐意为每个实例输入'unsigned int‘,但是如果有一个标准的类型定义函数(比如'uint',尽管没有一致的实现),我会使用它。在做了一些研究后,我怀疑情况并非如此,但人们可能对例如。C++11等,或者跨*nix/窗口的实现相同标签的标准标头。我对严格指定unsigned int的比特大小不是很感兴趣:它只用于低迭代循环。

EN

回答 3

Stack Overflow用户

发布于 2013-09-16 07:14:21

unsigned int的缩写是unsigned。类似地,long int可以缩写为longunsigned long int可以缩写为unsigned long

这条规则有一个例外:signed charunsigned char都不能缩写为char

票数 2
EN

Stack Overflow用户

发布于 2013-09-15 20:24:53

基本上,类型大小是由您使用的编译器和目标程序(可执行文件)将在其上运行的平台定义的。

例如,在x86机器上,几乎所有编译器都会将int (以及unsigned int)作为标准的32位整数。但是,在假设的128位CPU上,int可能会引用64位或128位整数。

但是,如果您像我一样坚持始终知道整数的大小,我建议您查看C++11中引入的cstdint头文件。

有关更多详细信息,请访问此站点:http://www.cplusplus.com/reference/cstdint/#include <stdint.h>用于C,将#include <cstdint>用于C++。

票数 1
EN

Stack Overflow用户

发布于 2013-09-15 23:18:44

语言标准和标准库没有为类型定义任何“微不足道”的别名,这些别名除了提供替代名称之外没有任何用途。

标准库确实定义了几个具有平台相关含义的类型别名。例如,整数类型std::uintptr_t是一个足以表示任何对象指针值的整数类型;std::max_align_t是一种其alignof-value是平台提供的最大的类型。其他类型别名是有条件定义的std::uint32_t等,如果它们存在,它们是具有2的补码表示的固定宽度的整数类型。当然,这些只是其中一个基本类型的typedefs,但含义是不同的,而且这些都不是微不足道的,所以有一个很好的理由使用这些typedefs。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18812207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档