Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有理由不使用固定宽度类型? 我是C++新手。 我在学习类型、它们的内存使用以及基于体系结构的内存大小差异。使用固定宽度类型(如int32_t)有什么缺点吗?_C++ - Fatal编程技术网

是否有理由不使用固定宽度类型? 我是C++新手。 我在学习类型、它们的内存使用以及基于体系结构的内存大小差异。使用固定宽度类型(如int32_t)有什么缺点吗?

是否有理由不使用固定宽度类型? 我是C++新手。 我在学习类型、它们的内存使用以及基于体系结构的内存大小差异。使用固定宽度类型(如int32_t)有什么缺点吗?,c++,C++,唯一真正的缺点可能是如果您希望代码能够移植到没有32位整数类型的系统中。在实践中,这是非常罕见的,但它们确实存在 C++可以通过访问C99(及更新的)整数类型,这将使您可以访问int\u leastnt\t和int\u fastN\t类型,这可能是将特定位宽度输入代码的最便捷的方式,如果你真的关心这个问题。int类型的初衷是让它代表你正在运行的体系结构的自然大小;您可以假设对它的任何操作对于整数类型来说都是最快的 现在的情况更复杂了。缓存效果或向量指令优化可能倾向于使用小于自然大小的整数类型 显

唯一真正的缺点可能是如果您希望代码能够移植到没有32位整数类型的系统中。在实践中,这是非常罕见的,但它们确实存在


C++可以通过访问C99(及更新的)整数类型,这将使您可以访问
int\u leastnt\t
int\u fastN\t
类型,这可能是将特定位宽度输入代码的最便捷的方式,如果你真的关心这个问题。

int类型的初衷是让它代表你正在运行的体系结构的自然大小;您可以假设对它的任何操作对于整数类型来说都是最快的

现在的情况更复杂了。缓存效果或向量指令优化可能倾向于使用小于自然大小的整数类型

显然,如果你的算法需要一个至少有一定大小的
int
,你最好对它进行明确说明

要节省空间,请使用
int\u least32\u t

要节省时间,请使用
int\u fast32\u t

但实际上,我个人经常使用
long
(至少32位)和
int
(至少16位),因为它们更容易输入


(此外,
int32_t
是可选的,不保证存在。)

在你的电脑上,不是。在一些甚至不提供int32_t的平台上(它是可选的)…这都是关于语义的。你在对阅读你代码的人说什么?如果您使用的是普通的
int
,那么您会说它是一个通用整数,没有什么特别之处。如果您使用
size\u t
,那么您会说它是某种尺寸。如果使用
int32\t
,则表示它是一种特定类型的整数数据,必须遵循某些限制(符号性和大小)当许多8位平台仍在使用时,
int
已经存在,并且要求16位。@CarlNorum但即使是那些架构通常也有使用16位
int
的说明-每个人都知道8位对于计算是无用的。@MarkRansom是一个8位或1字节的整数;我最终可以用十进制数到255或十六进制数到0xFF!我认为我30岁的过时计算器比8位整数做得更好。你能说出这样一个系统吗?其中有一个C++11编译器可用,但没有
(u)int32_t
?我不知道,但希望您能为摩托罗拉56k DSP获得一个C++11编译器;它有24位和48位,但没有32位本机类型。这两个问题是相关的:和。