GetTickCountなんですが

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
first

GetTickCountなんですが

#1

投稿記事 by first » 14年前

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の部分なのですが

どうして「%」なのでしょうか?

「/」でやってみたのですが変な表示のされかたでした

よろしくお願いします

hidden

Re: GetTickCountなんですが

#2

投稿記事 by hidden » 14年前

%演算子は割ったあまりを求めるものです。

90秒は1分と30秒ですね。
このとき30秒であることを求めるために
90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。

first

Re: GetTickCountなんですが

#3

投稿記事 by first » 14年前

hidden さんが書きました:%演算子は割ったあまりを求めるものです。

90秒は1分と30秒ですね。
このとき30秒であることを求めるために
90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。
お答えいただいたのにすみません
それでしたら(t/3600000)%24でいうと余りだけ表示されてしまうんじゃないんですか?

アバター
さかまき
記事: 92
登録日時: 14年前

Re: GetTickCountなんですが

#4

投稿記事 by さかまき » 14年前

>それでしたら(t/3600000)%24でいうと余りだけ表示されてしまうんじゃないんですか?
余りだけ表示したいからです。

コード:

(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) = 起動からの秒

アバター
さかまき
記事: 92
登録日時: 14年前

Re: GetTickCountなんですが

#5

投稿記事 by さかまき » 14年前

というか、hidden さんの以下の説明
>90秒は1分と30秒ですね。
>このとき30秒であることを求めるために
>90%60 の結果が 30 (90を60で割ると1あまり30)であることを利用します。

をちゃんと読んだ上で
>それでしたら(t/3600000)%24でいうと余りだけ表示されてしまうんじゃないんですか?
という疑問をもたれたのでしょうか?だとすれば掲示板で説明は難しいです。

first

Re: GetTickCountなんですが

#6

投稿記事 by first » 14年前

そういうことなんですね

わかりました

hiddenさん
さかまきさん
ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る