intmax_t可以保存size_t最大十进制数吗? printf中的大小类型具有最大优先级uintmax_t / intmax_t或size_t(例如,如果我写printf(“%zjd”,x))?
答案 0 :(得分:2)
很可能不是
两者都是特定于实现的,因此无法回答。
size_t
(通常)是一个无符号整数,保存最大可能位数,适合给定CPU上的寄存器。虽然现实中并没有完全保证,但我仍然没有找到一个这样的例子。
intmax_t
是有符号整数,意味着它可能具有存储size_t
可以容纳的任何值所需的位,但是大值并不意味着相同; size_t
可以容纳的最大值,在被解释为intmax_t
时可能会为负整数。
答案 1 :(得分:0)
size_t
是无符号的,可能会有一点丢失。printf()
的工作原理,您可以拥有“可选的长度修饰符”,但不能超过一个。