intmax_t可以保持size_t吗?

时间:2017-12-07 13:10:52

标签: c printf size-type

intmax_t可以保存size_t最大十进制数吗? printf中的大小类型具有最大优先级uintmax_t / intmax_t或size_t(例如,如果我写printf(“%zjd”,x))?

2 个答案:

答案 0 :(得分:2)

很可能不是

两者都是特定于实现的,因此无法回答。

size_t(通常)是一个无符号整数,保存最大可能位数,适合给定CPU上的寄存器。虽然现实中并没有完全保证,但我仍然没有找到一个这样的例子。

intmax_t是有符号整数,意味着它可能具有存储size_t可以容纳的任何值所需的位,但是大值并不意味着相同; size_t可以容纳的最大值,在被解释为intmax_t时可能会为负整数。

答案 1 :(得分:0)

  1. 不,因为size_t是无符号的,可能会有一点丢失。
  2. 我认为您不了解printf()的工作原理,您可以拥有“可选的长度修饰符”,但不能超过一个。