- ベストアンサー
INT64対応のprintf系関数はありますか?
WindowsXP & Visual C++という環境でソフト開発しています。 大きな整数を扱うのでINT64を使用しているのですが、sprintf関数で整数を表示する為に「%d」を使うと、32ビット整数にしか対応していないらしく、正しく動作しないことが分かりました。 64ビット整数に対応したprintf系の関数群は存在するのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
★VC++のバージョンは何でしょうか? ・VC++6.0以前…long long型には対応していない(書式制御文字列については分かりません) VC++2003……long long型には対応、ただし書式制御文字列は『%I64d』『%I64u』です。 VC++2005……long long型に対応、書式制御文字列は『%lld』『%llu』です。 VC++2008……VC++2005と同じだと思う(未確認) ・参考にして下さい。
その他の回答 (3)
- koko_u_
- ベストアンサー率18% (459/2509)
long long int て必ず 64bit なんでしたっけ? わざわざ型の宣言で long long int でなくて明示的に INT64 としているのだっだら、書式指定時にも %I64d とした方がよいような気がする。
お礼
%I64dで解決しました。ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
手元で調べた限りでは long long が 64ビットのようだから, %lld でいけるはず. 他の処理系のことも考えるならこっちの方が安全. C99 なら inttypes.h を #include すればいいんだけど, Microsoft って C99 に対応したがらないんですよね.
お礼
%I64dで解決しました。ありがとうございました。
- koko_u_
- ベストアンサー率18% (459/2509)
MSDN には ----- 書式指定は、省略可能なフィールドと必須フィールドを使用して次の形式で行います。 %[flags] [width] [.precision] [{h | l | ll | I | I32 | I64}]type ----- て書いてあるから、%I64d とか書けばいいんじゃない?
お礼
%I64dで解決しました。ありがとうございました。
お礼
%I64dで解決しました。ありがとうございました。