GetTickCountでwindowsの起動してからの時間何時間何分何秒という表示の仕方にしたいのですが
ネットで調べてみると見つけたのですがわからないところがあったので教えていただけないでしょうか
void DoGetTickCount()
{
DWORD t;
t = GetTickCount();
printf("Windows 起動から %d日 %d時間 %d分 %d秒 経過",
t/86400000,
(t/3600000)%24,
(t/60000)%60,
(t/1000)%60
);
}
このプログラムの
t/86400000, (t/3600000)%24, (t/60000)%60, (t/1000)%60の部分なのですが
どうして「%」なのでしょうか?
「/」でやってみたのですが変な表示のされかたでした
よろしくお願いします
GetTickCountなんですが
Re: GetTickCountなんですが
%演算子は割ったあまりを求めるものです。
90秒は1分と30秒ですね。
このとき30秒であることを求めるために
90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。
90秒は1分と30秒ですね。
このとき30秒であることを求めるために
90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。
Re: GetTickCountなんですが
お答えいただいたのにすみませんhidden さんが書きました:%演算子は割ったあまりを求めるものです。
90秒は1分と30秒ですね。
このとき30秒であることを求めるために
90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。
それでしたら(t/3600000)%24でいうと余りだけ表示されてしまうんじゃないんですか?
Re: GetTickCountなんですが
>それでしたら(t/3600000)%24でいうと余りだけ表示されてしまうんじゃないんですか?
余りだけ表示したいからです。
以下同様に
(t/60000) = 起動からの分
(t/1000) = 起動からの秒
余りだけ表示したいからです。
(t/3600000) = 起動からの時間(時)なので
0 1 2 3 ... 22 23 24 25 26 27 28 ... 46 47 48 49 50 ...
となります。24時、48時、72時・・・で0時に戻したいでしょ?
なので、これを %24(24で割った余りを求める)すると
0 1 2 3 ... 22 23 0 1 2 3 4 ... 22 23 0 1 2 ...
になり24時間表示になります。
(t/60000) = 起動からの分
(t/1000) = 起動からの秒
Re: GetTickCountなんですが
というか、hidden さんの以下の説明
>90秒は1分と30秒ですね。
>このとき30秒であることを求めるために
>90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。
をちゃんと読んだ上で
>それでしたら(t/3600000)%24でいうと余りだけ表示されてしまうんじゃないんですか?
という疑問をもたれたのでしょうか?だとすれば掲示板で説明は難しいです。
>90秒は1分と30秒ですね。
>このとき30秒であることを求めるために
>90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。
をちゃんと読んだ上で
>それでしたら(t/3600000)%24でいうと余りだけ表示されてしまうんじゃないんですか?
という疑問をもたれたのでしょうか?だとすれば掲示板で説明は難しいです。