CStringT – プログラミング – Home

通知
すべてクリア

[解決済] CStringT


てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

環境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()), としてみても評価は変らないようで困ってい
ます。原因わかる方よろしくお願い致します。


引用未解決
トピックタグ
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

> 原因わかる方よろしくお願い致します。
CTimeSpanのGetDaysメンバは
 LONGLONG GetDays( ) const throw( );
だから、
 time.GetDays()*24 + time.GetHours()
は64ビット長で、int 二つ分に相当するから。


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

ありがとうございます。
VC6.0からの移行で戻り値のチェックをしていませんでした。今後気をつけたいと思います!


返信引用
FlatWest
 FlatWest
(@FlatWest)
ゲスト
結合: 15年前
投稿: 17
 

s.Format(_T(%I64d : %d : %d\n), ・・・);


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました