首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应使用size_t或ssize_t

应使用size_t或ssize_t
EN

Stack Overflow用户
提问于 2013-04-01 15:34:37
回答 2查看 116.3K关注 0票数 105

在我的代码中,我不使用int或unsigned int。我只在可移植时使用size_t或ssize_t。例如:

代码语言:javascript
运行
复制
typedef size_t intc;    // (instead of unsigned int)
typedef ssize_t uintc;  // (instead of int)

因为strlen string vector..。所有这些都使用size_t,所以我通常使用size_t。而且我只在ssize_t可能为负的时候才使用它。

但我发现:

无符号整数类型非常适合将存储视为位数组的用途。使用无符号而不是整数来获得更多的位来表示正整数几乎从来都不是一个好主意。通过将变量声明为无符号来确保某些值为正数的尝试通常会被隐式转换规则击败。

The C++ Programming Language这本书中。

所以我很困惑。我说错了吗?为什么STL不遵守书上的建议?

EN

回答 2

Stack Overflow用户

发布于 2013-04-01 15:50:43

ssize_t用于返回值可以是有效大小或负值以指示错误的函数。它保证至少能够存储[-1, SSIZE_MAX]范围内的值(SSIZE_MAX依赖于系统)。

因此,无论何时返回字节大小,您都应该使用size_t,而无论何时返回字节大小或(负)错误值,都应该使用ssize_t

请参阅:http://pubs.opengroup.org/onlinepubs/007908775/xsh/systypes.h.html

票数 177
EN

Stack Overflow用户

发布于 2013-04-01 15:59:48

ssize_t不包含在该标准中,并且不可移植。在处理对象的大小时,应该使用size_t (对于指针差异,也有ptrdiff_t )。

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

https://stackoverflow.com/questions/15739490

复制
相关文章

相似问题

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