つい集めてしまうものはなんですか?

WindowsXP & Visual C++という環境でソフト開発しています。

大きな整数を扱うのでINT64を使用しているのですが、sprintf関数で整数を表示する為に「%d」を使うと、32ビット整数にしか対応していないらしく、正しく動作しないことが分かりました。

64ビット整数に対応したprintf系の関数群は存在するのでしょうか?

A 回答 (4件)

★VC++のバージョンは何でしょうか?


・VC++6.0以前…long long型には対応していない(書式制御文字列については分かりません)
 VC++2003……long long型には対応、ただし書式制御文字列は『%I64d』『%I64u』です。
 VC++2005……long long型に対応、書式制御文字列は『%lld』『%llu』です。
 VC++2008……VC++2005と同じだと思う(未確認)
・参考にして下さい。
    • good
    • 3
この回答へのお礼

%I64dで解決しました。ありがとうございました。

お礼日時:2008/01/24 08:07

long long int て必ず 64bit なんでしたっけ?



わざわざ型の宣言で long long int でなくて明示的に INT64 としているのだっだら、書式指定時にも %I64d とした方がよいような気がする。
    • good
    • 1
この回答へのお礼

%I64dで解決しました。ありがとうございました。

お礼日時:2008/01/24 08:08

手元で調べた限りでは long long が 64ビットのようだから, %lld でいけるはず. 他の処理系のことも考えるならこっちの方が安全.


C99 なら inttypes.h を #include すればいいんだけど, Microsoft って C99 に対応したがらないんですよね.
    • good
    • 0
この回答へのお礼

%I64dで解決しました。ありがとうございました。

お礼日時:2008/01/24 08:06

MSDN には



-----
書式指定は、省略可能なフィールドと必須フィールドを使用して次の形式で行います。

%[flags] [width] [.precision] [{h | l | ll | I | I32 | I64}]type
-----

て書いてあるから、%I64d とか書けばいいんじゃない?
    • good
    • 0
この回答へのお礼

%I64dで解決しました。ありがとうございました。

お礼日時:2008/01/24 08:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A