c++ - 获取C++中最大的有符号整数类型

标签 c++ c signed unsigned-integer size-t

假设我必须接受一个大小作为处理数组的接口(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/

相关文章:

c++ - 空结构背后的目的?

c++ - 如何设置默认g++?

objective-c - 比较 objective-c 中的有符号和无符号值

有符号数和无符号数的比较

java - 如何使用java或c计算3^1002的数字之和?

c++ - 我想将这个 char 数组中的每个元素保存到一个单独的数组中

c - 免费通话时进行核心转储

c - 如何正确地将TAG值转换为正确的格式以便验证HMAC?

c - 头文件被包含两次

c - 为什么整数在溢出时会有不同的行为