假设我必须接受一个大小作为处理数组的接口(interface)的参数。例如
void doSomethingRelatedToArrays(const size_t length)
在这里,我使用 size_t
时考虑了以下几点:
- 长度必须始终为正数
size_t
总是类型定义为系统中最大的无符号整数类型。std::size_t
可以存储理论上可能的任何类型对象的最大大小。
但是,我不应该在我的接口(interface)中使用无符号类型,因为客户端可以传入一个负数,它被隐式转换为一个无符号数,而我没有任何方法在我的方法中验证它。请参阅 Scott Meyer 关于此主题的文章 here .
所以,我应该将有符号整数类型传递给 API。但是如何才能得到系统中最大的有符号整数类型呢?是否有任何类似于 size_t
的类型定义已签名?或者我应该改用 size_t
吗?
最佳答案
size_t
的带符号等价物就是 ssize_t
,但此类型并未在 C99 标准中定义,即使它为许多编译器所知。
对于 C99 标准,最大的有符号整数类型定义为 intmax_t
。
引用:7. 库/7.18 整数类型/7.18.1.5 最大宽度整数类型
关于c++ - 获取C++中最大的有符号整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837603/