「C Primer Plus」の例では、作成者はnsigned longに対して(scanfとprintfの両方で)%ul
形式指定子を使用しています。問題を一般化しようとすると、%ul
が私のコンピュータで何か問題を起こしているようです。しかし、%lu
を使用することで問題は解決しました。
実際、問題とコードの行に焦点を当てるのではなく、%ul
と%lu
の違いについて知りたいのです。多分私は何が悪いのかを理解することができました。
検索しても、私に役立つものはありません(「それらが異なる」ということを除いて)。
説明やリンク/リファレンスはありがたいです。
%lu
は正しいですが、%ul
はが正しくありません。
printf
形式指定子は、%[flags][width][.precision][length]specifier
の形式に従います。
u
は指定子で、「符号なし10進整数」を意味します。
l
はlength修飾子で、「長い」という意味です。
length修飾子は、変換specifierの前に置く必要があります。つまり、%lu
は正しいです。