-1
printfを(C言語の)ほとんどの機能を使って再コードする作業があります。しかし、いくつかのテストを行っているうちに、私は問題を発見しました。ユーザーが1つ以上の修飾子を置いたときの標準関数の動作を理解できません。たとえば
:Cのprintfのフラグと修飾子
printf("%hhld", 128) results in 128 printed out;
printf("%lhhd", 128) results in 128 printed out;
printf("%lhhd", 9223372036854775807) shows 9223372036854775807;
printf("%lhhd", 9223372036854775808) shows -9223372036854775808;
printf("%hhld", 9223372036854775807) shows 9223372036854775807;
printf("%hhld", 9223372036854775808) shows -9223372036854775808;
何修飾子が選択され、どのようにprintfのそれを選ぶのでしょうか?なぜこの状況では常にhhを無視するのですか?
もう1つの質問は、私のprintfがフラグと修飾子をランダムな順序で使用するかどうかです。ウィキでは、物品は、特定の順序を述べているので:
% [パラメータ] [フラグ] [幅] [精度] [長さ]は、これは未定義の動作である
あなたは私にそれを説明するか、男性の正確な線を正確に指摘するほど親切ですか?私はそれを何度も読んだことがありますが、私の質問に対する答えはまだ分かりません。 – kjioyh
"* Length Modifier *"セクションの上記の答えでリンクされているドキュメントでは、 "* Aの後の整数変換は...に対応しています"というフレーズは "この長さ修飾子は...としか使用できません"この規則に従わない。これにより、未定義の動作が呼び出されます。 – alk