intmax_t与long long int相同吗?

cou*_*que 13 c posix

通过POSIX,intmax_t指定一个有符号整数类型,能够表示任何有符号整数类型的任何值.

在C99/C11中intmax_t总是和它一样大小是否正确long long int

R..*_*R.. 10

No. intmax_t可以是大于的扩展整数类型long long.我不知道有任何系统将其定义为这样,但你不应该在应用程序代码中假设它们是相同的.(假设它们在操作系统代码中是相同的,如果你的操作系统总能保证,但它仍然可能是一个坏主意.)

  • `inttype_t` 应该是 `intmax_t`。对不起 4+ 年有点过了 SO 的编辑窗口.. (3认同)
  • 形式上,`__ int128`不是扩展的整数类型,因为`inttype_t`必须是包含扩展整数类型的最大有符号整数类型.从合规程序的角度来看,这只是你假装不存在的东西.:-) (2认同)

Cir*_*四事件 5

C99 N1256标准草案

6.2.5类型告诉我们有关“扩展的有符号整数类型”的信息:

4有五种标准的带符号整数类型,分别指定为带符号char,short int,int,long int和long long int。(这些和其他类型可以用其他几种方式指定,如6.7.2中所述。)也可能有实现定义的扩展有符号整数类型。标准和扩展有符号整数类型统称为有符号整数类型。29)

29)因此,本标准中有关有符号整数类型的任何声明也适用于扩展的有符号整数类型。

7.18.1.5最大宽度整数类型表示这intmax_t是最大可能的“有符号整数类型”,因此包括扩展的整数类型:

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

intmax_t
Run Code Online (Sandbox Code Playgroud)

6.4.4.1然后,整数常量就很清楚地表明扩展的整数类型可能大于任何标准的整数类型:

6如果一个整数常量不能用其列表中的任何类型表示,则它可以具有扩展的整数类型(如果扩展的整数类型可以表示其值)。