2017-12-07 10 views
0

intmax_tはsize_tの最大10進数を保持できますか? printfのどのサイズのタイプが最も優先度が高いのですか?uintmax_t/intmax_tまたはsize_t(例:printf( "%zjd"、x))?intmax_tはsize_tを保持できますか?

+1

「優先度」とはどういう意味ですか? –

+0

優先度は「処理の優先度」を意味します。 – EmanRuoy

+0

'%zjd'は未定義の動作につながると思います。 –

答えて

2

ほとんど可能性がない

どちらの実装固有のものですので、それは答えることは本当にことはできません。

size_tは、(通常)特定のCPU上のレジスタに収まる最大のビット数を保持する符号なし整数です。それは実際には保証されていませんが、これが真実でない例はまだ見つかりませんでした。

intmax_tは符号付き整数です。つまり、size_tが保持できる任意の値を格納するために必要なビットを持つ可能性がありますが、大きな値は同じ意味ではありません。 size_tが保持できる最大値は、intmax_tと解釈されると負の整数になる可能性が高くなります。

0
  1. いいえ、size_tは1ビットを落とす危険があります。
  2. printf()の仕組みを理解できないと思いますが、「任意の長さ修飾子」を持つことはできますが、複数はできません。
+0

私はそれを知っている、私はprintf関数のコピーを書くしようとしていると私はstdio.hを参照してくださいprintfが "サイズ優先度処理"を持っている場合は文字列が複数のサイズタイプのMODを持っています。 – EmanRuoy

関連する問題