• ベストアンサー

値を変数に代入して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秒

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

  • ベストアンサー
回答No.2

可変長引数の関数である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); としなければなりません。

googleoooo
質問者

お礼

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

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

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

googleoooo
質問者

お礼

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