应该使用的size_t或ssize_t供[复制](should use size_t or ssiz

2019-08-18 12:15发布

这个问题已经在这里有一个答案:

  • 签名与无符号整数的长度/计数 4个回答

在我的代码,我不使用int或unsigned int。 我只用为size_t或ssize_t供便携。 例如:

typedef size_t intc;    // (instead of unsigned int)
typedef ssize_t uintc;  // (instead of int)

因为strlenstringvector ...所有使用size_t ,所以我通常使用size_t 。 而我只用ssize_t当它可能为负。

但是,我发现:

无符号的整数类型是理想的可治疗存储作为比特阵列的用途。 使用的,而不是一个int无符号,以获得一个更位代表正整数是几乎从来没有一个好主意。 试图确保某些值是通过声明的变量无符号通常被隐式转换规则被打败阳性。

在这本书的C ++编程语言 。

所以我很困惑。 我错了吗? 为什么STL没有书上的提示遵守?

Answer 1:

ssize_t用于其返回值为既可以是一个有效的尺寸,或负的值,以指示一个误差函数。 它被保证是能够存储在范围内的至少值[-1, SSIZE_MAX] SSIZE_MAX取决于系统)。

所以,你应该使用size_t每当你的意思是返回字节大小, ssize_t您随时返回无论是在字节大小或(负)误差值。

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



Answer 2:

ssize_t不包含在标准,不便于携带。 size_t应该处理的对象的大小(也就是当使用ptrdiff_t也为指针差异)。



文章来源: should use size_t or ssize_t [duplicate]