%uか%huか%luのいづれかが正しいだろうという考えです。表現範囲に収まる事がわかっている場合に限り、これは、問題ないと考えています。これは、問題ないと考えています。組木紙織さんのご意見とも関係するのですが...LLP64の環境では、size_tは64ビット、intやlongは32ビットです。sizeof(int)は4になるのでintの表現範囲に収まります。必要そうならば%ldや%luでlong系を使います。sizeof(int)で済んでしまうので,fprintf系への出力はあまりないですね。VC++使用なので,%zuは未対応が前提。sizeof(int));を使うこともあります。忘れていることが多いです。intとは限らない」ことは忘れないので,キャストで見かけの安全を確保している感じです。私はよほどの事が無い限りその状況で%uは使わないですね~。何かのサイズを得るのに符号ビットが変わるほどの大きさになるような事ってあるのでしょうか?2バイトで表現しているならあると思いますが。4バイトにおいて、あったとしても私の使用範囲としてはレアなので、そういう時はそういう時でまた考えると思います。仕様と厳密に合わせる事は必要だとは思いますが、そこまでの必要性が無いと思うところはいつも適当です。9年前YuOさんのご意見のように、キャストするのがおそらく最も移植性のある現実解だと私も思います。仕様と厳密に合わせる事は必要だとは思いますが、そこまでの必要性が無いと思うところはいつも適当です。これは仕様と厳密に合わせるだけでなく、結構現実的な問題だったりします。早い話が、32ビット環境と64ビット環境の互換性の問題なのです。Windowsしか相手しないような人でも、これは大きな問題だと思います。(手元のMacでしか試していませんが)64ビット環境の場合、可変個の実引数は32ビットのint値を渡してもスタックには64ビットで積まれます。本来、%luとか%lluとすべきところを%uとしても、リトルエンディアンであれば問題ないでしょう。最近は環境も多様化していまして、モバイル環境ではCPUがARMだったりしてビッグエンディアンに遭遇することも少なくないのです。これらは現在のところ32ビットだとは思いますが、近い将来64ビット化することは十分考えられます。した場合にはやはり現実に問題が顕在化します。わずかな努力で将来の問題を回避できるならそうすべきですよね。このことは、今書いたコードが問題が顕在化するぐらい将来に再利用されるだけでなく、今身に付けている癖が問題が顕在化するぐらい将来まで尾を引くことも含めて考えるべきではないでしょうか。絶対的に正しいと思っていました。絶対的に正しいと思っていました。このように書く人は結構いますからね。ここでいったん解決にしたいと思います。類似の雑談スレを立てますが、よろしくお願いします。ミクプラは自由にリンクできます。