C++ 无符号整数C++;便携性
是否为适用于大多数/所有平台的“非原始整数”定义了缩短标签typedef?我在Windows中看到过很多uint或uint,但我知道这在其他平台上并不一致。我很乐意为每个实例键入“unsigned int”,但是如果有一个标准的typedef(比如“uint”,尽管它的实现并不一致),我会使用它。在做了一点研究之后,我怀疑情况并非如此,但人们可能对C++11等或实现相同标签的*nix/Windows标准头有所了解。我对严格指定unsigned int的位大小不太感兴趣:它只用于低迭代循环。基本上,类型大小由您使用的编译器和目标程序(可执行文件)将运行的平台定义 例如,在x86机器上,几乎所有编译器都将C++ 无符号整数C++;便携性,c++,coding-style,int,C++,Coding Style,Int,是否为适用于大多数/所有平台的“非原始整数”定义了缩短标签typedef?我在Windows中看到过很多uint或uint,但我知道这在其他平台上并不一致。我很乐意为每个实例键入“unsigned int”,但是如果有一个标准的typedef(比如“uint”,尽管它的实现并不一致),我会使用它。在做了一点研究之后,我怀疑情况并非如此,但人们可能对C++11等或实现相同标签的*nix/Windows标准头有所了解。我对严格指定unsigned int的位大小不太感兴趣:它只用于低迭代循环。基本上
int
(因此unsigned int
)表示标准的32位整数。但是,在假设的128位CPU上,int
可能指的是64位或128位整数
但是,如果您像我一样,坚持始终知道整数的大小,我建议您查看C++11中引入的cstdint
标题
这允许您独立于编译器和平台指定特定大小的整数(例如,uint32\u t
)。不过要小心,如果某个特定平台不支持该大小,那么您的程序要么无法编译
有关更多详细信息,请访问此网站:
使用<代码> >包含<和代码> C和<代码>包含C++的 .
基本上,类型大小是由您正在使用的编译器和目标程序(可执行文件)运行的平台定义的。 例如,在x86机器上,几乎所有编译器都将
int
(因此unsigned int
)表示标准的32位整数。但是,在假设的128位CPU上,int
可能指的是64位或128位整数
但是,如果您像我一样,坚持始终知道整数的大小,我建议您查看C++11中引入的cstdint
标题
这允许您独立于编译器和平台指定特定大小的整数(例如,uint32\u t
)。不过要小心,如果某个特定平台不支持该大小,那么您的程序要么无法编译
有关更多详细信息,请访问此网站:
对于C和<代码>使用< <代码> >包含> <代码> C++。 < p>语言标准和标准库不定义任何类型的“别名”别名,除了提供替代名称之外,它们没有任何用途。
标准库确实定义了几个具有平台相关含义的类型别名。例如,整数类型
std::uintpttr\u t
是一种足以表示任何对象指针值的整数类型std::max_align\u t
是一种类型,其alignof
-值是平台提供的最大值。其他类型别名是有条件定义的std::uint32_t
etc,如果它们存在,则是固定宽度的整数类型,具有两个补码表示。当然,这些只是其中一种基本类型的typedef,但含义不同,没有一种是琐碎的,因此有理由使用这些typedef。语言标准和标准库没有定义任何“琐碎的”类型的别名除了提供一个替代名称之外没有其他用途
标准库确实定义了几个具有平台相关含义的类型别名。例如,整数类型
std::uintpttr\u t
是一种足以表示任何对象指针值的整数类型std::max_align\u t
是一种类型,其alignof
-值是平台提供的最大值。其他类型别名是有条件定义的std::uint32_t
etc,如果它们存在,则是固定宽度的整数类型,具有两个补码表示。当然,这些只是基本类型之一的typedef,但含义不同,没有一个是琐碎的,因此有理由使用这些typedef。无符号int的缩写是无符号
。类似地,long int
可以缩短为long
,而unsigned long int
可以缩短为unsigned long
此规则有一个例外:
有符号字符
或无符号字符
可以缩短为字符
无符号整数的缩写为无符号
。类似地,long int
可以缩短为long
,而unsigned long int
可以缩短为unsigned long
<>这个规则有一个例外:<代码>符号char < /> > NO>代码>未签名char <代码>可以缩短为<代码> char < /> >。<代码>未签名int >代码>是一个标准的、内置的类型,您可以在每个C++平台上使用它。你想解决什么问题?在使用内置类型时,你不必担心可移植性(除非你正在为嵌入式系统或类似的东西构建应用程序)。它们将以同样的方式工作,除非您想要使用某种网络—在不同的体系结构之间发送数据—并且除非您使用诸如“ld”、“lld”等printf格式说明符并尝试在32位和64位上编译。所以我也会选择uint32_t和类似的东西。看看这里:@kerrek SB-我们的愿望是使用最常用的东西,即如果人们使用快捷方式。我将继续使用更详细但清晰的“unsigned int”。鉴于该问题因“基于意见”而获得3张反对票,我重新编写了它,但要感谢那些回答的人。
unsigned int