Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンパイル結果が違う)

VC++2010でコンパイルした場合にt2の値が0になる理由

このQ&Aのポイント
  • VC++2010のCL.exeでコンパイルした場合、プログラム実行時にt2の値が0になる現象が発生します。
  • また、実行結果も遅くなることが報告されています。
  • この問題の原因は現在のところ不明ですが、VC++2010でのコンパイルに関連するバグや最適化の違いが関与している可能性があります。

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

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

VC++10ではtime_tの型がデフォルトで__int64になっています。longではないので%ldでは正しく表示できません。

参考URL:
http://msdn.microsoft.com/ja-jp/library/1f4c8f33(VS.80).aspx
tdr2500
質問者

お礼

おかげさまで、サッパリしました。 変な動きをしたら、型を疑え!ですね。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

キャストするのが正当ですね printf("\ntime1=%ld time2=%ld\n", (long)t1, (long)t2);

tdr2500
質問者

お礼

ありがとうございました。 そうですね。 型でした。 勉強になりました。

すると、全ての回答が全文表示されます。
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

time2の表示にt1の上位4バイトが表示されるのでしょうね printf2回に分ければ表示はされます printf("\ntime1=%ld ", t1); printf("\ntime2=%ld \n", t2);

tdr2500
質問者

お礼

ありがとうございました。 勉強になりました。

すると、全ての回答が全文表示されます。

関連するQ&A