4

在 C++ 标准 18.4 中,它指定:

typedef 'signed integer type' intmax_t;

根据具有 64 位long int和 64位的平台上的标准long long int,这种“有符号整数类型”应该是什么?

请注意long intlong long int不同的基本类型。

C++ 标准说:

头文件定义了与 C 标准中的 7.18 相同的所有函数、类型和宏。

在 C 标准 (N1548) 的 7.18 中,它说:

以下类型指定能够表示任何有符号整数类型的任何值的有符号整数类型:

intmax_t

在这种情况下,似乎两者都long int符合long long int条件?

这是正确的结论吗?那要么是符合标准的选择吗?

4

2 回答 2

4

是的,你的推理是正确的。大多数现实世界的实现选择满足条件的最低等级类型。

于 2013-03-07T18:37:22.443 回答
3

好吧,假设 GNU C 库是正确的(来自 /usr/include/stdint.h):

/* Largest integral types.  */
#if __WORDSIZE == 64
typedef long int                intmax_t;
typedef unsigned long int       uintmax_t;
#else
__extension__
typedef long long int           intmax_t;
__extension__
typedef unsigned long long int  uintmax_t;
#end
于 2013-03-07T18:42:01.530 回答