[問題] 關於clock()

看板C_and_CPP (C/C++)作者 (小傑)時間16年前 (2009/07/06 20:24), 編輯推噓0(0022)
留言22則, 2人參與, 最新討論串1/2 (看更多)
void wait ( double seconds ) { clock_t endwait; endwait = clock () + seconds * CLOCKS_PER_SEC ; while (clock() < endwait) {} } 1.不能直接while(0<endwait)嗎? 2.如果這是放在for迴圈裡跑 那clock()會重算嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.14.246

07/06 20:46, , 1F
不能直接while, endwait是一個你設定好的目標
07/06 20:46, 1F

07/06 20:46, , 2F
就像是你預訂晚上九點要看電視, endwait就是晚上九點
07/06 20:46, 2F

07/06 20:48, , 3F
while(0 < endwait)會是個無窮迴圈
07/06 20:48, 3F

07/06 20:52, , 4F
for loop其實就是while loop
07/06 20:52, 4F

07/06 21:18, , 5F
那麼clock()是什麼?
07/06 21:18, 5F

07/06 21:19, , 6F
依上述的例子是指?
07/06 21:19, 6F

07/06 21:31, , 7F
我先丟幾個網頁給你
07/06 21:31, 7F

07/06 21:33, , 10F
上面那個網頁選clock, 抱歉我很少在縮網址, 不太熟
07/06 21:33, 10F

07/06 21:40, , 11F
根據網頁的說法, clock()是傳回某段時間, 單位為毫秒
07/06 21:40, 11F

07/06 21:42, , 12F
某段時間是"從程式開始跑 至 clock()呼叫"的這段時間
07/06 21:42, 12F

07/06 21:48, , 13F
其實我解釋的不好, 第二個網頁說明得比較清楚
07/06 21:48, 13F

07/06 21:48, , 14F
不過在endwait那行式子中的clock()為什麼不會跑?
07/06 21:48, 14F

07/06 21:50, , 15F
clock()是tick的次數, CLOCKS_PER_SEC是每秒tick幾次
07/06 21:50, 15F

07/06 21:50, , 16F
如果程式開始就跑的話那while那段程式不就會一直跑
07/06 21:50, 16F

07/06 21:52, , 17F
clock()只是做"一次"動作, 回傳函式從開始到執行clock
07/06 21:52, 17F

07/06 21:53, , 18F
間, tick了幾次
07/06 21:53, 18F

07/06 21:54, , 19F
對, 沒錯, while會一直跑
07/06 21:54, 19F

07/06 21:56, , 20F
例如執行wait(1), endtime就被設定為執行到endtime那行
07/06 21:56, 20F

07/06 21:57, , 21F
之後的一秒, 接著while一直跑, 直到clock()超過endtime
07/06 21:57, 21F

07/06 22:06, , 22F
我了解了 真是謝謝你~
07/06 22:06, 22F
文章代碼(AID): #1AKUpz3j (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
0
22
文章代碼(AID): #1AKUpz3j (C_and_CPP)