在C ++标准18.4中,它指定:
typedef 'signed integer type' intmax_t;
在具有64位long int
和64位long long int
的平台上的标准应该是“有符号整数类型”吗?
请注意,long int
和long long int
是不同的基本类型。
C ++标准说:
标题定义所有函数,类型和宏,与C标准中的7.18相同。
和C标准的7.18(N1548)中说:
以下类型指定能够表示任何值的有符号整数类型 任何有符号整数类型:
intmax_t
在这种情况下,long int
和long long int
似乎都符合条件?
这是正确的结论吗?那要么是符合标准的选择?
答案 0 :(得分:4)
是的,你的推理是正确的。大多数现实世界的实现选择满足条件的最低秩类型。
答案 1 :(得分: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