通知
すべてクリア
Topic starter
2009年11月12日 5:49 PM
環境VS2008,MFC WindowsXP
CTimeSpanをフォーマットしていて
CString s;
CTimeSpan time(0, 1, 3, 33);
s.Format(_T(%d : %d : %d\n), time.GetDays()*24 + time.GetHours(),
time.GetMinutes(), time.GetSeconds());
TRACE(s);
期待される結果として 1 : 3 : 33
なはずなのですが実行すると1: 0: 3
となってしまいます。同じ結果になる方はいらっしゃいますか?
(time.GetDays()*24 + time.GetHours()), としてみても評価は変らないようで困ってい
ます。原因わかる方よろしくお願い致します。
2009年11月12日 6:25 PM
> 原因わかる方よろしくお願い致します。
CTimeSpanのGetDaysメンバは
LONGLONG GetDays( ) const throw( );
だから、
time.GetDays()*24 + time.GetHours()
は64ビット長で、int 二つ分に相当するから。
Topic starter
2009年11月12日 6:38 PM
ありがとうございます。
VC6.0からの移行で戻り値のチェックをしていませんでした。今後気をつけたいと思います!
2009年11月12日 6:40 PM
s.Format(_T(%I64d : %d : %d\n), ・・・);