ページ 11

s5. 処理速度を一定にする。について

Posted: 2010年2月09日(火) 22:25
by KANITAMA
ここの記述の関数wait_fanc()でtをstaticにし、t=GetNowCount();としていますが
GetNowCount()が2147483648ミリ秒以上を返してきたらintが数字を保てなくなりオーバーフローしてしまうのではないでしょうか
こんなに起動する場合はないかもしれませんがなんとかこのを解決できませんでしょうか
それとも別に平気なのでしょうか

Re:s5. 処理速度を一定にする。について

Posted: 2010年2月09日(火) 22:44
by MNS
2147483647を超えたら、値は-2147483648に戻ると思いますよ。

Re:s5. 処理速度を一定にする。について

Posted: 2010年2月09日(火) 22:47
by Justy
>オーバーフローしてしまうのではないでしょうか
 オーバーフローはしません。
 GetNowCount()は 0x7fffffffを越えたら、0に戻り循環します。
 なので、前回の値より小さくなった場合は循環したと考えて、それを加味して処理すれば
大丈夫です。

Re:s5. 処理速度を一定にする。について

Posted: 2010年2月09日(火) 22:55
by KANITAMA
皆さん返信ありがとうございます。
循環を加味した考えで対処してみます。
ありがとうございました。

Re:s5. 処理速度を一定にする。について

Posted: 2010年2月09日(火) 23:03
by Dixq (管理人)
時間関連の関数はこの辺参考になるでしょうか。

http://www.katto.comm.waseda.ac.jp/~kat ... /time.html

http://d.hatena.ne.jp/prog_pc/20090522/1242977667

ここに書いてない関数でclockもありますね。GetNowCountと同じような関数ですが。

私は趣味程度のプログラムならintでいいやって感じにしてますが、
製品に組み込むような時はgettimeofdayをlong long unsigned intで扱えるようにして使ってます。

intでも1ヵ月弱カウント出来るので、趣味で作る程度のゲームなら十分なんじゃないかと思います。