こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

値を変数に代入してprintfで表示しようとしてもうまくいきません

値を変数に代入して、printfで表示しようとしてもうまくいきません。
ソースのどこが悪いか教えていただけないでしょうか?
変数の値を1個ずつ表示する場合は、正常になります。
問題は、1行で表示する場合に1個目の値は出るのですが正常な表示にはなりません。
//ソース開始
#include <stdio.h>
#include <windows.h>

int main()
{
LARGE_INTEGER i64,h64;
LONGLONG work,h,m,s;

QueryPerformanceCounter(&i64);
QueryPerformanceFrequency(&h64);

//起動時間をミリ秒取得
work = i64.QuadPart*1000 / h64.QuadPart;

//時間をhに入れる
h = work / 1000 / 3600;
//分をmに入れる
m = (work / 1000 - h * 3600) / 60;
//秒をsに入れる
s = work / 1000 - h * 3600 - m * 60;

//表示
printf("%d時間%02d分%02d秒\n",h,m,s);
printf("%d時間\n",h);
printf("%d分\n",m);
printf("%d秒\n",s);
printf("%d秒\n",work);

return 0;
}
//ソースここまで
//実行結果
289時間00分55秒
289時間
55分
54秒
1043754590秒
続行するには何かキーを押してください . . .
//理想の表示結果
1行目が以下のようになってほしい
289時間55分54秒

投稿日時 - 2008-12-20 23:53:44

QNo.4571391

すぐに回答ほしいです

質問者が選んだベストアンサー

可変長引数の関数であるprintf関数では書式指定文字の指定がとても重要になります。
渡された引数のサイズをその書式指定文字から決めますので、
適切に指定しないと引数の値を正しく認識できません。

printf 関数と wprintf 関数の書式指定フィールド
http://msdn.microsoft.com/ja-jp/library/56e442dc.aspx
から
サイズと距離の指定
http://msdn.microsoft.com/ja-jp/library/tcxf1dw6.aspx
より
LONGLOGがlong longであるのであれば、
>printf("%d時間%02d分%02d秒\n",h,m,s);

printf("%lld時間%02lld分%02lld秒\n",h,m,s);
としなければなりません。

投稿日時 - 2008-12-21 00:37:49

お礼

回答ありがとうございます。
解決しました。
本当にありがとうございました

投稿日時 - 2008-12-21 01:31:30

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

出力する値の型と書式はあってますか?

投稿日時 - 2008-12-21 00:00:40

お礼

回答ありがとうございます
調べてみます

投稿日時 - 2008-12-21 01:33:32

あなたにオススメの質問