Sky*_*eSM 1 c c++ signed size-t unsigned-integer
假设我必须接受一个大小作为处理数组的接口的参数.对于前者
void doSomethingRelatedToArrays(const size_t length)
Run Code Online (Sandbox Code Playgroud)
在这里,我使用size_t时考虑到以下因素:
但是,我不应该在我的接口中使用无符号类型,因为客户端可以传入负数,这是隐式转换为无符号数,我没有办法在我的方法中验证它.请参阅斯科特·迈尔的文章就这个问题在这里.
所以,我应该将有符号整数类型传递给API.但是如何在系统中获得最大的有符号整数类型?是否有任何类似于size_t的typedef被签名?或者我应该只使用size_t?
签名的等价物size_t很简单,ssize_t但即使许多编译器都知道,这种类型也没有在C99标准中定义.
对于C99标准,最大有符号整数类型定义为intmax_t.
参考:7.Library/7.18整数类型/ 7.18.1.5最大宽度整数类型