应该使用size_t或者ssize_t
在我的代码中,我不使用int或unsigned int。 我只使用size_t或ssize_t来进行移植。 例如:
typedef size_t intc; // (instead of unsigned int) typedef ssize_t uintc; // (instead of int)
因为strlen
, string
, vector
…都使用size_t
,所以我通常使用size_t
。 而且,只有当ssize_t
可能是负数时才使用。
但是我发现:
无符号整数types非常适合将存储器视为位数组的用途。 使用unsigned而不是int来获得更多的位来表示正整数几乎不是一个好主意。 尝试通过声明variables无符号来确保某些值是正值将通常被隐式转换规则所破坏。
在“C ++编程语言 ”一书中。
所以我感到困惑。 我错了吗? 为什么STL不遵守书上的build议?
ssize_t
用于返回值可以是有效大小的函数,或者用于指示错误的负值。 保证能够存储至less在[-1, SSIZE_MAX
]范围内的值( SSIZE_MAX
取决于系统)。
所以你应该使用size_t来返回一个以字节为单位的大小,而ssize_t只要你返回一个以字节为单位的大小或一个(负)的错误值。
请参阅: http : //pubs.opengroup.org/onlinepubs/007908775/xsh/systypes.h.html
ssize_t
不包含在标准中,不可移植。 处理对象的大小时应该使用size_t
(对于指针的不同,也有ptrdiff_t
)。